2013-07-06 150 views
1

一个复杂的模型,我有一个像模型数据:节省骨干

{ 
    "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": "[email protected]", 
    "id": "10", 
    "isUser": false 
} 

现在我想修改数据和保存模型,假设我的模型被命名为“cmodel”。当我尝试保存数据,我已经试过如下:

cmodel.save({ 
    organizations[0].org_address:"road1", 
    organizations[0].org_name:"name1" 
}); 

然而,这并没有工作,所以我想知道如何挽救我的编辑的数据。

希望你的帮助,谢谢。

回答

2

我很好奇,看看亩是否太短的回答/评论会起作用,因为这本来是天赐之物!我已经离开了,并改变了我自己的代码:)

但是,如果您尝试按照他的建议保存模型,它将不幸将一个新属性合并到名为“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")); 
+0

但我有一个问题,它可以写成orgClone [0] .org_address:“road1”, orgClone [0] .org_name:“name1”使用“:”?或者它应该使用“=”写入 – user2528222

+0

是的,抱歉, 。它应该是一个“=”运算符。我编辑过它。 – dcarson