【发布时间】:2014-12-05 06:35:27
【问题描述】:
我有一个带有 observableArray 项目的模型,这很好。例如
var arr = ko.observableArray([{name: ko.observable('hello')}]);
我的问题是我想为这些不属于模型本身的项目设置一组单独的设置。在这种特殊情况下,我想跟踪选定的记录。
如果我把项目放在模型中,那是微不足道的。
ko.utils.arrayForEach(arr, function(item) {
item.selected = ko.observable(false);
});
但这会永久性地改变模型,并破坏我想添加新元素的其他地方。
所以我尝试的是对数组进行可计算,但效果不佳。
var selected = ko.computed(function () {
if (!arr()) return [];
return ko.utils.arrayMap(arr().list(), function () {
return ko.observable(false);
});
});
因为它会记住返回的项目,所以当 arr 发生变化时,它会以奇怪的方式破坏事物。
如何将这两件事分开,同时仍保持同步?
【问题讨论】:
标签: knockout.js model viewmodel durandal-2.0