配列に新しいアイテムを追加しようとすると、Knockout Mapping Plugin に (アイテムの) 「作成」メソッドを実行させることができないようです。json からの最初の作成では実行されるようですが、新しいアイテムの追加では実行されないようです。
これは非常に単純化されたjsFiddle です
注:同様の質問を見てきましたが、それらはすべて、私が持っていない静的オブジェクトを参照しています。
初期 JSON
var json = {
"Items": [{
"ItemID": 1,
"ItemDate": "2000-01-02T00:00:00Z",
"Amount": 50
},{
"ItemID": 2,
"ItemDate": "2000-01-02T00:00:00Z",
"Amount": 100
}]
};
マッピング オプション
var mappingOptions = {
"Items": {
create: function (mappingoptions) {
var data = mappingoptions.data;
data = data || {
"ItemID": ko.observable(0),
"ItemDate": ko.observable(currentDate),
"Amount": ko.observable(new Date())
};
var result = ko.mapping.fromJS(data);
return result;
}
}
};
モデルの表示(Add メソッドあり)
MyApp.Batch.ViewModel = function (jsonBatch) {
//Works Great
var model = ko.mapping.fromJS(jsonBatch, mappingOptions);
//Doesn't Work
model.addItem = function() {
// TRYING TO ADD a new Empty Item USING THE AUTO MAPPER
var newItem;
model.Items.push(ko.mapping.fromJS(newItem, mappingOptions))
};
return model;
};