我正在使用knockout将dom元素绑定到视图模型,并且在第一次将视图模型应用于dom元素时,一切都很有效。
稍后,一个非常相似的视图模型应用于同一个dom元素,但绑定不会更新 - 可能是因为knockout认为它与之前的视图模型相同。
有没有办法强制淘汰赛应用新的视图模型并丢弃旧的视图模型?
答案 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)
删除绑定并将其应用于新的视图模型。