gpt4 book ai didi

javascript - Knockout.JS 可观察数组对单个可观察项的更改

转载 作者:行者123 更新时间:2023-12-03 09:31:43 24 4
gpt4 key购买 nike

我有一个带有 observableArray 的 View 模型(命名为“所有”)对象。该对象的属性之一是 observable名称选择。每当数组中子对象的选定属性发生更改时,我都希望执行一些代码。我尝试手动订阅 all通过 all.subscribe()但该代码仅在添加或删除项目时触发。我更新了代码来做到这一点:

all.subscribe(function () {
ko.utils.arrayForEach(all(), function (item) {
item.selected.subscribe(function () {
//code to fire when selected changes
});
});
});

这是正确的方法还是有更好的方法?

最佳答案

这接近正确。可观察数组订阅仅适用于添加或删除项目,而不是修改。因此,如果您想订阅项目本身,您需要订阅项目本身:

Key point: An observableArray tracks which objects are in the array, not the state of those objects

Simply putting an object into an observableArray doesn’t make all of that object’s properties themselves observable. Of course, you can make those properties observable if you wish, but that’s an independent choice. An observableArray just tracks which objects it holds, and notifies listeners when objects are added or removed.


( from Knockout documentation)

我说“接近正确”,因为您将要删除所有旧订阅。目前,如果可观察数组以 [a, b] 开头您正在订阅 [a, b] , 但是如果 c添加您有两个订阅 ab加一为 c .

关于javascript - Knockout.JS 可观察数组对单个可观察项的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9726172/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com