我有一个来自api的JSON数据,如下所示:
var dataTotalInit = { dataTotal: [{ Cost: 0, Quantity: 0, Security: "" }] };
var mappingResult = ko.mapping.fromJS(dataTotalInit, {}, self);
稍后当我从buttonClick获取数据时,我想添加到我的JSON。
ko.utils.arrayForEach(self.AnotherObject(),function(item) {
self.dataTotal.push({Cost:item.Cost(),Quantity:item.Quantity(),Security:item.Security()});
});
当我逐步执行代码时,它会将值添加到dataTotal,但数据不可观察,因此我的视图不会更新。请帮助谢谢
答案 0 :(得分:1)
应该是
var dataTotalInit = ko.observableArray();
没有必要预先填充数组,但您可以这样做:
var dataTotalInit = ko.observableArray([[{ Cost: 0, Quantity: 0, Security: "" }]);
然后,正如您在示例中所示,将项目推送到observableArray:
ko.utils.arrayForEach(self.AnotherObject(),function(item) {
self.dataTotal.push({Cost:item.Cost(),Quantity:item.Quantity(),Security:item.Security()});
});
更多信息:
http://knockoutjs.com/documentation/observableArrays.html
答案 1 :(得分:1)
您还需要观察新对象的所有属性:
ko.utils.arrayForEach(self.AnotherObject(),function(item) {
self.dataTotal.push(ko.mapping.fromJS({Cost:item.Cost(),Quantity:item.Quantity(),Security:item.Security()}));
});