我一直在广泛使用Knockout.js,但是我使用了很多模式,我想了解它是如何工作的。
通常我会有一些ObservableArray的某些视图模型,例如productModule.products()。然后我将有各种过滤器函数,例如productModule.getAvailableProducts(),它使用数组过滤器(我目前使用Underscore.js)返回一个子集,该函数是绑定到UI的。我不太明白的是,鉴于这些函数返回标准数组而不是ObservableArray,Knockout的绑定在我更改底层的ObservableArray时仍会更新。这是一个小例子:
Knockout是否在绑定时确定特定绑定是否通过其他函数解析为ObservableArray?如果是这样,链中是否可以有任意数量的此类函数?
非常感谢任何理解这一点的帮助。
答案 0 :(得分:0)
绑定实际上是在用于跟踪依赖关系的计算observable中执行的。因此,如果调用访问observable的函数,那么它们将对该元素的绑定的依赖性做出贡献。当依赖项发生更改时,绑定将再次运行。
这篇文章详细介绍了一下:http://www.knockmeout.net/2012/06/knockoutjs-performance-gotcha-3-all-bindings.html