将新项插入(添加)到由淘汰映射插件映射的knockout viewmodel?

时间:2014-09-11 23:48:51

标签: knockout.js insert mapping add

我有一个问题。如何通过knockout mapping plugin将新项插入到映射对象?

var ctrlVm = {
        oJsonFromServer: {},
        Init: function () {
            $.getJSON('Sample/GetJson', function (data) {
                ctrlVm.oJsonFromServer = ko.mapping.fromJS(data);
                ko.applyBindings(ctrlVm.oJsonFromServer);
            });
        }
    };

    $(function () {
        ctrlVm.Init();
    });

服务器上采用oJsonFromServer。

来自服务器的JSON:

{  
"id":1,
"ArrayCollection":[  
  {  
     "id":1,
     "idParent":1,
     "name":"Steve",
     "ArrayCollectionChild":[  
        {  
           "id":1,
           "idParent":1,
           "ArrayCollectionChild_Child":[  
              {  
                 "id":1,
                 "idParent":1,
                 "name":"Bob"
              }
           ]
        }
     ],
     "ArrayCollectionChild2":[  
        {  
           "id":1,
           "idParent":1,
           "name":"Phill"
        }
     ]
  }
 ]
}

我想向ArrayCollection添加一个新项目,它将添加ArrayCollectionChild,ArrayCollectionChild_Child等。我怎么能这样做?

您无需提供完整的回复。请给我一个主意。从服务器映射json对象后,我们如何向其中添加/插入新项?手动?有没有办法自动完成?

感谢。

**编辑:我在做什么。我正在寻找最简单的方法。 **(只是基本代码)

function ArrayCollectionChild(id, idParent, name){
    var self = this;
    self.ChildCollection = ko.observableArray([]);
    self.id = ko.observable(id);
    self.idParent = ko.observable(idParent);
    self.name = ko.observable(name);                  
}

function ArrayCollectionChild_Child(id, idParent, name){
    var self = this;
    self.id = ko.observable(id);
    self.idParent = ko.observable(idParent);
    self.name = ko.observable(name);          
}

function ViewModel(){
    var self = this;
    self.ArrayCollection = ko.observable([]);

    self.addArrayCollectionChild = function(){
         var objToAdd = new ArrayCollectionChild(1,1,"Bob");
         self.ArrayCollection.push(objToAdd); // Object
    }
}

0 个答案:

没有答案