0

这似乎是一个应该已经回答的问题,但我无法找到任何关于此的讨论。

我有一系列项目,其中一些可以选择:

function Item(name) {
    this.name = name;
    this.selected = ko.observable(false);
}

function ViewModel() {
    var self = this;
    this.items = ko.observableArray([]);

    this.selected = ko.computed(function() {
        return ko.utils.arrayFilter(self.items(), function (item) {
            return item.selected();
        });
    }, this);
}

由于viewmodel.selected()取决于,每当我向可观察viewmodel.items()对象添加新对象时,即使未选择添加的项目,也会发生变化。如果没有实际选择新项目,如何防止更新?itemsselectedthis.selected()

4

1 回答 1

0

我不确定您是否可以使用纯 ko.computed 解决方案来实现这一目标。也许您可以订阅您的“项目”更改。添加一个项目时,您检查它是否被选中,如果是,则将其推送到另一个 observableArray。

请参阅此问题的第一个答案:确定使用 Knockoutjs ObservableArray 添加或删除了哪个元素 它将允许您订阅“项目”(添加或删除的项目)的特定更改。

于 2013-06-26T10:42:50.583 回答