0

次のような API からの JSON データがあります。

var dataTotalInit = { dataTotal: [{ Cost: 0, Quantity: 0, Security: "" }] };
var mappingResult = ko.mapping.fromJS(dataTotalInit, {}, self);

後でボタンクリックからデータを取得したら、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

新しいオブジェクトのすべてのプロパティも監視可能にする必要があります。

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 に答える
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 に答える