Knockout如何更新通过其他函数过滤的ObservableArrays上的绑定?

时间:2012-08-24 00:04:19

标签: javascript knockout.js ko.observablearray

我一直在广泛使用Knockout.js,但是我使用了很多模式,我想了解它是如何工作的。

通常我会有一些ObservableArray的某些视图模型,例如productModule.products()。然后我将有各种过滤器函数,例如productModule.getAvailableProducts(),它使用数组过滤器(我目前使用Underscore.js)返回一个子集,该函数是绑定到UI的。我不太明白的是,鉴于这些函数返回标准数组而不是ObservableArray,Knockout的绑定在我更改底层的ObservableArray时仍会更新。这是一个小例子:

http://jsfiddle.net/4RHks/19/

Knockout是否在绑定时确定特定绑定是否通过其他函数解析为ObservableArray?如果是这样,链中是否可以有任意数量的此类函数?

非常感谢任何理解这一点的帮助。

1 个答案:

答案 0 :(得分:0)

绑定实际上是在用于跟踪依赖关系的计算observable中执行的。因此,如果调用访问observable的函数,那么它们将对该元素的绑定的依赖性做出贡献。当依赖项发生更改时,绑定将再次运行。

这篇文章详细介绍了一下:http://www.knockmeout.net/2012/06/knockoutjs-performance-gotcha-3-all-bindings.html