2013-07-06 3 views
1

J'ai données du modèle comme:pour sauver un modèle compliqué épine dorsale

{ 
    "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 
} 

Maintenant, je veux modifier les données et enregistrer le modèle, supposons que mon modèle est nommé « CModel ». Lorsque je tente de sauvegarder les données, j'ai essayé ce qui suit:

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

Cependant, cela ne fonctionne pas, alors je veux savoir comment sauvegarder mes données éditées.

Espérons que votre aide, merci.

Répondre

2

J'étais curieux de voir si mu est trop court la réponse/le commentaire fonctionnerait, car cela aurait été une aubaine! Je serais allé et a changé beaucoup de mon propre code :)

Cependant, si vous essayez d'enregistrer votre modèle comme il le suggère, il va malheureusement fusionner un nouvel attribut dans votre modèle nommé "organisations [0] .org_address". Vous pouvez voir ceci dans this fiddle.

Alors ... Si vous avez un attribut de votre modèle qui est un tableau et que vous voulez éditer et enregistrer des éléments individuels du tableau, la façon de le faire est de cloner tout le tableau, de changer les éléments que vous voulez, puis passer le tableau cloné à la fonction de sauvegarde comme celui-ci

var orgClone = _.clone(cmodel.get("organizations")); 

orgClone[0].org_address = "road1"; 
orgClone[0].org_name = "name1"; 

cmodel.save({organizations: orgClone }); 

Il est important de noter que la fonction clone underscore est une copie superficielle seulement. Si vous avez un attribut de modèle qui est un objet complexe avec les tableaux/objets imbriqués, il serait sage de rouler votre propre fonction clone ou utiliser étendre jQuery pour obtenir un clone profond comme suit:

var orgClone = $.extend([], cmodel.get("organizations")); 
+0

Mais j'ai une question , peut-il être écrit comme orgClone [0] .org_address: "road1", orgClone [0] .org_name: "nom1" en utilisant ":"? Ou il devrait être écrit en utilisant "=" – user2528222

+0

Oui désolé, qui m'a passé . Ce devrait être un opérateur "=". Je l'ai édité. – dcarson

Questions connexes