2012-11-22 66 views
0

我有一個API,它看起來像這樣的JSON數據:如何添加到現有的Knockout JS映射對象?

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

製作'dataTotal'可觀察到的陣列? –

回答

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

+0

感謝您的回覆,但我需要初始化並映射dataTotal。在我看來,我有輸入框,數據綁定它們。有沒有辦法做到這一點與映射? – user1175857

1

你需要做一個新的對象也可觀察到的所有屬性:

ko.utils.arrayForEach(self.AnotherObject(),function(item) { 
    self.dataTotal.push(ko.mapping.fromJS({Cost:item.Cost(),Quantity:item.Quantity(),Security:item.Security()})); 
});