我的视图模型中具有以下功能,以建立一个由item.array_name字段命名的可观察数组的动态数组。但是,我陷入了用Document对象填充数组的问题。因此,我在每个数组的页面内多次重复使用相同的HTML接口。有人可以指出我的错误方向吗,还是他们的更好方法?
self.getDocument = function(){
//Reset arrays
self.documents.removeAll();
//Dynamically build arrays
$.getJSON("/Documentation/Get-Section", function(allData) {
$.map(allData, function(item) {
var obj = {};
obj[item.array_name] = ko.observableArray([]);
self.documents(obj)
})
});
//Add document object to the arrays
$.getJSON("/Documentation/Get-Document", function(allData)
$.map(allData, function(item) {
var temp_array = 'self.documents.'+item.array_name
eval(temp_array+'(new Document(item))')
});
});
}
最佳答案
我会拒绝你的物品:
self.getDocument = function(){
//Reset arrays
self.documents.removeAll();
//Dynamically build arrays
$.getJSON("/Documentation/Get-Section", function(allData) {
$.map(allData, function(item) {
var section = { name: item.array_name, documents: ko.observableArray([])};
self.documents.push(section);
})
});
//Add document object to the arrays
$.getJSON("/Documentation/Get-Document", function(allData){
$.map(allData, function(item) {
var section = ko.utils.arrayFirst(self.documents(), function(documentSection) {
return documentSection.name === item.array_name;
});
section.documents.push(new Document(item));
});
});
}