我有一个问题。如何通过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
}
}