2012-08-15 78 views
1

我是ko的newby,但找不到我的問題的解決方案。我嘗試將我的可綁定屬性組織到視圖模型層次結構中。根據文檔,我認爲以下內容應該可行,但事實並非如此。你有什麼提示嗎?Knockout.js嵌套viewmodel不起作用

function AppViewModel() { 
    this.nested = new NestedViewModel(); 
} 

function NestedViewModel() { 
    this.firstName = ko.observable(); 
    this.lastName = "Bertington"; 
} 

ko.applyBindings(new AppViewModel()); 

這裏使用:

<p data-bind="with: nested"> 

<p>First name: <input type="text" data-bind="value: firstName, valueUpdate: afterkeydown"></input></p> 
<p>Last name: <strong data-bind="text: firstName"></strong></p> 

</p> 

回答

6

你的HTML是無效的。你不能嵌套<p>元素。因此瀏覽器自動生成結束標記爲<p data-bind="with: nested"></p>

用例如外層包裝替換外包裝。一個<div>使HTML有效和腳本工作。

此外,它需要是valueUpdate: 'afterkeydown'(加上引號),否則淘汰賽會尋找名爲「afterkeydown」的可觀察項。

這是一個工作演示:http://jsfiddle.net/JwWCc/1/

+0

謝謝,現在完美的作品:) – kataik 2012-08-15 12:23:09