0

我有一个来自 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 但数据不可观察,因此我的视图不会更新。请帮忙谢谢

4

2 回答 2

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

于 2012-11-22T00:13:20.897 回答
1

您还需要使新对象的所有属性都可观察:

ko.utils.arrayForEach(self.AnotherObject(),function(item) {
    self.dataTotal.push(ko.mapping.fromJS({Cost:item.Cost(),Quantity:item.Quantity(),Security:item.Security()}));
});
于 2012-11-22T00:39:59.170 回答