Knockout.js 更新模型内部的可观察对象,但不触发模型中的关联事件

Knockout.js 更新模型内部的可观察对象,但不触发模型中的关联事件,knockout.js,knockout-2.0,Knockout.js,Knockout 2.0,嗨,我有一个模型被一个变量击倒了: var knockoutObject = knockoutObservable; 如果我这样做: knockoutObject(newValue); 它触发敲除(?)的绑定事件,并刷新ui 如何在不影响整个屏幕的情况下更新knockoutObservable的值?换句话说:更新模型上的值,但不更新UI 我知道这有点奇怪,因为这是MVVM的交易,但我需要它用于特定场景 编辑: 我想做的是: 屏幕上有几棵树。它们受模型的约束。 当我更新模型中的某个可观察对象时

嗨,我有一个模型被一个变量击倒了:

var knockoutObject = knockoutObservable;
如果我这样做:

knockoutObject(newValue);
它触发敲除(?)的绑定事件,并刷新ui 如何在不影响整个屏幕的情况下更新knockoutObservable的值?换句话说:更新模型上的值,但不更新UI

我知道这有点奇怪,因为这是MVVM的交易,但我需要它用于特定场景

编辑: 我想做的是: 屏幕上有几棵树。它们受模型的约束。 当我更新模型中的某个可观察对象时,所有树都将被重新渲染,并接近默认状态。它给了我糟糕的用户体验
因此,因为当我在树中更改一个值时,UI已经用正确的值进行了更新(这就是我构建它的方式),所以我不需要敲除来重新命名树。只是模型上的值

我有一个用于树的自定义绑定处理程序:

ko.bindingHandlers.Tree
谢谢,您可以使用它来延迟执行-但是您可能希望以不同的方式处理整个问题。通过对您试图解决的问题的深入了解,我们可能会提出更好的替代方案

更新(来自评论):


理想情况下,绑定不应该重新创建jsTree插件,而应该简单地修改它的内部结构。这是最好的方法。


如果不能这样做,请查看是否可以在绑定中缓存状态,并使用以前的状态重新创建jsTree

将自定义绑定上的更新更改为不折叠树不是更好吗?这不是折叠树。。它将再次呈现jsTree插件。。默认情况下,它是折叠的。我不能告诉它只是不呈现插件,因为有时我也需要他。。。只有在这种情况下,我认为绑定最好不要重新创建jsTree插件,而只是修改它的内部结构。如果不能这样做,请查看是否可以在绑定中缓存状态,并使用以前的状态重新创建jsTree。但这意味着要浏览屏幕上所有的树。。。这对我来说是个糟糕的工作。。。保存几个状态(不知道有多少是动态的),然后重新创建它。没那么有趣……:)您可以发布一个带有您的场景的JSFIDLE吗?您不必更新所有的树代码,只需更新您创建的绑定即可。