我有一个模型数据,如:
{
"status": 7,
"organizations": [{
"org_address": "\u4e2d\u56fd\u5317\u4eac\u5e02\u671d\u9633\u95e8\u59161001\u53f7",
"job_positions": "\u603b\u7ecf\u7406",
"org_id": 11,
"org_name": "\u6570\u7ef4\u79d1\u6280"
}],
"first_name": null,
"last_name": null,
"create_date": "2013-07-02 23:47:14.239000",
"name": "\u5f20\u5174\u6807",
"extra_emails": [null],
"tags": [{
"oid": 4,
"id": 4,
"name": "friend"
}],
"nick_name": "\u9ec4\u98de\u9e3f",
"gender": "\u7537",
"image": null,
"created_by": "system",
"effective_start_date": "2013-07-02 23:47:14.239000",
"social_medias": [{
"url": "http://weibo.com/12345",
"sm_name": "\u6700\u70ab\u6c11\u65cf\u98ce",
"type": "\u65b0\u6d6a\u5fae\u535a",
"party_sm_id": 1
}],
"date_of_birth": "1980-04-01",
"extra_phones": {
"office_phone": "82323333",
"fax": "82324433"
},
"mobile_phone": "13909609306",
"primary_email": "zhangxb@xy.com",
"id": "10",
"isUser": false
}
现在我想修改数据并保存模型,假设我的模型名为“cmodel”。当我尝试保存数据时,我尝试了以下内容:
cmodel.save({
organizations[0].org_address:"road1",
organizations[0].org_name:"name1"
});
但是这不起作用,所以我想知道如何保存我编辑的数据。
希望得到你的帮助,谢谢你。
答案 0 :(得分:2)
我很想知道mu是否太短了答案/评论会起作用,因为这本来就是天赐之物!我已经离开并改变了我自己的代码:)
但是,如果您按照他的建议尝试保存模型,很遗憾会将新属性合并到名为“organizations [0] .org_address”的模型中。您可以在this fiddle中看到这一点。
所以......如果您的模型属性是一个数组,并且您想编辑和保存数组的各个元素,那么这样做的方法是克隆整个数组,更改您想要的元素,然后将克隆的数组传递给像这样的保存函数
var orgClone = _.clone(cmodel.get("organizations"));
orgClone[0].org_address = "road1";
orgClone[0].org_name = "name1";
cmodel.save({organizations: orgClone });
重要的是要注意下划线克隆功能只是浅拷贝。如果您的模型属性是具有嵌套数组/对象的复杂对象,那么滚动您自己的克隆函数或使用jQuery扩展来获得深度克隆是明智的,如下所示:
var orgClone = $.extend([], cmodel.get("organizations"));