【问题标题】:How does Knockout update bindings on ObservableArrays which are filtered through other functions?Knockout 如何更新通过其他函数过滤的可观察数组上的绑定?
【发布时间】:2012-08-24 08:28:40
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: javascript knockout.js ko.observablearray


    【解决方案1】:

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

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

    【讨论】:

    • 这是一篇非常有用的帖子,关于每个绑定具有独立计算 observable 的 fork 的部分很有趣。我的应用程序变得越来越复杂,我需要开始密切关注它的 Knockout 工作量。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 2018-11-06
    • 2014-01-28
    • 1970-01-01
    相关资源
    最近更新 更多