在knockout.js中强制执行applyBinding

时间:2011-06-02 07:35:36

标签: javascript data-binding mvvm knockout.js

我正在使用knockout将dom元素绑定到视图模型,并且在第一次将视图模型应用于dom元素时,一切都很有效。

稍后,一个非常相似的视图模型应用于同一个dom元素,但绑定不会更新 - 可能是因为knockout认为它与之前的视图模型相同。

有没有办法强制淘汰赛应用新的视图模型并丢弃旧的视图模型?

1 个答案:

答案 0 :(得分:4)

最常见的方法是使用模板绑定。它看起来像是:

<div data-bind="template: { name: 'mainTmpl', data: myData }"></div>


var viewModel = {
    myData: ko.observable(),
}    

现在,您可以将myData设置为新的视图模型,例如:viewModel.myData(newData),模板绑定将根据新数据处理重新呈现内容。

否则,您可以执行以下操作:ko.cleanNode(yourRootElement)(或传递文档),然后ko.applyBindings(yourNewViewModel)删除绑定并将其应用于新的视图模型。