**注意:**这主要是为了调试和理解KnockoutJS。
是否有一种方法可以显式请求Knockout从(已绑定的)视图模型刷新视图?我正在寻找类似以下的内容:
ko.refreshView();
我知道这不是Knockout的预期用途,但我仍然想知道是否有这样的方法用于调试和学习目的。
bfrts1fy1#
你不能在整个viewModel上调用一些东西,但是在单个观察对象上你可以调用myObservable.valueHasMutated()来通知订阅者他们应该重新求值。
myObservable.valueHasMutated()
ars1skjm2#
在某些情况下,简单地删除绑定然后重新应用可能会很有用:
ko.cleanNode(document.getElementById(element_id)) ko.applyBindings(viewModel, document.getElementById(element_id))
d6kp6zgx3#
我在这里创建了一个带有bindHTML敲除绑定处理程序的JSFiddle:https://jsfiddle.net/glaivier/9859uq8t/首先,将绑定处理程序保存到它自己的(或公共的)文件中,并在Knockout之后包含。如果使用此开关,则将绑定切换到:
<div data-bind="bindHTML: htmlValue"></div> OR <!-- ko bindHTML: htmlValue --><!-- /ko -->
u1ehiz5o4#
一个简单的替代方法是清除可观察数组:
let tmp = myObservableArray(); myObservableArray([]); myObservableArray(tmp);
注意:此替代方案可能会影响性能。
4条答案
按热度按时间bfrts1fy1#
你不能在整个viewModel上调用一些东西,但是在单个观察对象上你可以调用
myObservable.valueHasMutated()
来通知订阅者他们应该重新求值。ars1skjm2#
在某些情况下,简单地删除绑定然后重新应用可能会很有用:
d6kp6zgx3#
我在这里创建了一个带有bindHTML敲除绑定处理程序的JSFiddle:https://jsfiddle.net/glaivier/9859uq8t/
首先,将绑定处理程序保存到它自己的(或公共的)文件中,并在Knockout之后包含。
如果使用此开关,则将绑定切换到:
u1ehiz5o4#
一个简单的替代方法是清除可观察数组:
注意:此替代方案可能会影响性能。