这似乎是一个本来应该已经回答的问题,但我还没有找到任何关于此的讨论。
我有一系列项目,其中一些可能会被选中:
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()
,每当我向items
添加新对象时,selected
可观察对象也会发生变化,即使未选择添加的项目也是如此。如果没有实际选择新项目,如何阻止this.selected()
更新?
答案 0 :(得分:0)
我不确定您是否可以使用纯粹的ko.computed解决方案实现这一目标。 也许您可以订阅您的“项目”更改。添加一个项目时,检查它是否被选中并将其推送到另一个observableArray(如果是)。
查看此问题的第一个答案:Determine which element was added or removed with a Knockoutjs ObservableArray 它允许您订阅“项目”(项目添加或删除)的特定更改。