2013-02-07 48 views
2

當現有綁定我第一次使用applyBindings(),以我的模型應用到文檔:knockout.js applyBindings腐化使用的getElementById

ko.applyBindings(appViewModel); 

然後我追加了一些動態內容:

$('#contentSection').append(myAccountTmpl); 

然後我使用applyBindings將模型應用於新內容。如果我使用getElementById引用動態添加的節點,則文檔上的綁定已損壞。如果我使用的參考JQuery的風格我也沒問題:

ko.applyBindings(appViewModel,document.getElementById('#myAccountForm')); //corrupts other bindings 
    ko.applyBindings(appViewModel,$('#myAccountForm')[0]); //No Problems! 

如果任何人都可以提出這種現象的解釋,我們將不勝感激。我對這些技術很陌生,沒有線索。我甚至不能解釋我的意思是「腐敗」,除了某些綁定無法顯示內容(我確實證實數據仍然在綁定的模型屬性中)。

此外,這可能會幫助其他人無法解釋與他們的綁定「腐敗」。

回答

1

如果您使用document.getElementById請不要用散列將其前綴。使用散列形式是選擇器語法。 getElementById期待id名稱,因此對於您的版本,它將返回null。正確的形式是:

ko.applyBindings(appViewModel,document.getElementById('myAccountForm'));