2

配列に新しいアイテムを追加しようとすると、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;
};
4

1 に答える 1