所以,我从模型中抓取一个数字,并尝试使用该数字(可观察数组的长度)来动态控制“子模型”中的对象数量。在这种情况下,当我在父模型中添加或删除“元标题”时,子模型将自动具有正确数量的相应“元字段”。
所以这抓住了我所依据的数组的长度:
self.metaCount = ko.computed(function() {
return parent.metaHeadings().length;
});
这是我想要将对象动态推送到的数组:
self.metaColumns = ko.observableArray([]);
这就是我试图将项目动态推送到数组中的方式:
self.columnUpdate = ko.computed(function() {
for (i=0; i<self.metaCount(); i++) {
self.metaColumns.push({heading: ko.observable()});
}
});
现在,我正在模型中完成所有这些工作。原因是我有几个模型和子模型的实例,当更改发生时,让每个实例都处理自己的更新更有意义。
我是不是错了?
答案 0 :(得分:1)
我想说这取决于你的要求。首先,您当前的代码是否正常工作?如果不是什么问题?
metaColumns数组是否需要独立编辑?如果答案是否定的,那么为什么只需要将它们作为一个单独的财产来维护:
self.metaColumns = ko.computed(function() {
var result = [];
for (i=0; i<self.metaCount(); i++) {
self.metaColumns.push({heading: ko.observable()});
}
return result;
});
我注意到,当重新计算columnUpdate时,您当前没有清除metaColumns数组,因此它将继续添加到数组中。
希望这有帮助。