knockout.js applyBindings在使用getElementById时会破坏现有的绑定

时间:2013-02-07 17:31:11

标签: jquery knockout.js append

我首先使用applyBindings()将我的模型应用于文档:

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 个答案:

答案 0 :(得分:1)

如果您使用document.getElementById,请不要使用哈希作为前缀。带有哈希的表单是选择器语法。 getElementById期望id名称,因此对于您的版本,它返回null。正确的形式是:

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