Knockout:动态控制数组中的对象数量?

时间:2012-03-06 01:10:38

标签: javascript knockout.js

所以,我从模型中抓取一个数字,并尝试使用该数字(可观察数组的长度)来动态控制“子模型”中的对象数量。在这种情况下,当我在父模型中添加或删除“元标题”时,子模型将自动具有正确数量的相应“元字段”。

所以这抓住了我所依据的数组的长度:

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()}); 
        } 
}); 

现在,我正在模型中完成所有这些工作。原因是我有几个模型和子模型的实例,当更改发生时,让每个实例都处理自己的更新更有意义。

我是不是错了?

1 个答案:

答案 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数组,因此它将继续添加到数组中。

希望这有帮助。