如何强制一个视图刷新,而不会从一个可观察的事件自动触发?

注意:这主要是为了debugging和理解KnockoutJS。

有没有办法显式地请求Knockout刷新视图(已经绑定)视图模型? 我正在寻找像这样的东西:

ko.refreshView(); 

我明白,这不是Knockout的预期用途,但我仍然想知道是否有这样的方法来debugging和学习的目的。

你不能在整个viewModel上调用某个东西,但是在一个单独的observable上,你可以调用myObservable.valueHasMutated()来通知订阅者他们应该重新评估。 正如你所提到的,这在KO中通常是不需要的。

在某些情况下,简单地删除绑定然后重新应用可能是有用的:

 ko.cleanNode(document.getElementById(element_id)) ko.applyBindings(viewModel, document.getElementById(element_id)) 

我在这里创build了一个JSFiddle和bindHTML knockout绑定处理程序: https ://jsfiddle.net/glaivier/9859uq8t/

首先,将绑定处理程序保存到自己的(或通用)文件中,并在Knockout之后包含。

如果你使用这个开关绑定到这个:

 <div data-bind="bindHTML: htmlValue"></div> OR <!-- ko bindHTML: htmlValue --><!-- /ko -->