2

我一直在广泛使用 Knockout.js,但是我经常使用一种模式,我想了解它的实际工作原理。

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

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

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

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

4

1 回答 1

0

绑定实际上是在用于跟踪依赖关系的计算 observable 中执行的。因此,如果您调用访问可观察对象的函数,那么它们将有助于该元素绑定的依赖关系。当依赖改变时,绑定 s 将再次运行。

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

于 2012-08-24T00:28:40.140 回答