Comment mettre à jour le modèle dans la collection?
J'ai le texte suivant Backbone.js collection:
var Tags = Backbone.Collection.extend({
url: "/api/v1/tags/"
}),
Comment puis-je mettre à jour l'un des modèles de la collection ainsi que des postes d' /api/v1/tags/id et enregistre les données pour ce modèle.
Donc si je change le nom du modèle avec l'id 2 dans la collection
Il doit METTRE de
/api/v1/tags/2 avec les données suivantes:
nom: nouveau nom id: 2
Avez-vous essayé
model.save({name:'new name'});
?OriginalL'auteur jewelwast | 2013-03-18
Vous devez vous connecter pour publier un commentaire.
J'ai aussi récemment voulais mettre à jour le modèle particulier de la collection. Le problème est que si je l'avais juste
model.save
il n'a pas de mise à jour de la collection. L'objectif était de changer le modèle de collecte, de le modifier sur le serveur, mise à jour de la collection en conséquence et ne pas utiliser lesync
méthode. Ainsi, par exemple, j'ai ma variablecollection
et je veux changer le modèle avecid = 2
.Donc la première chose, je vais créer une instance de modèle, comme ceci:
var model = collection.get(2)
Alors je vais mettre à jour les attributs sur ce modèle en particulier:
model.set({name: 'new name'})
Alors je vais l'enregistrer sur le serveur:
model.save({}, {url:'/api/v1/tags/'+model.get('id')})
Ensuite, nous avons pour la mise à jour de la collection en conséquence pour les modifications:
collection.set({model},{remove: false})
set
méthode - c'est "intelligent" de la mise à jour de la collection avec la liste des modèles que vous avez passés en paramètres.remove: false
paramètre - c'est une restriction pour une collection de supprimer les autres modèles de la collection. Plus ici.OriginalL'auteur Prostakov
La première chose que vous pouvez manquer, c'est que, dans votre Balise correspondante modèle, vous aurez besoin de mettre "urlRoot" pour correspondre à la Collection "url". Sinon, il ne sait pas à propos de la collection à tous:
Ceci est utile si vous souhaitez enregistrer la balise séparément:
Sur la collection, "create()" est également "update()" si l'id n'est pas nulle. Ce n'est pas à confusion. 🙂 Donc, c'est à peu près équivalent à l'exemple précédent:
Cela permettra de mettre à jour la balise id=2, puis déclencher la vente.
C'est une question très ancienne; de répondre parce que j'étais à la recherche pour la même réponse: vous avez probablement depuis longtemps résolu ce problème et se sont déplacés. 🙂
OriginalL'auteur tekHedd
Vous pouvez passer des variables à l'
save
méthode. Il accepte toutes les options de jQueryajax
méthode utilise (sauf si vous surdéfiniBackbone.Sync
)Vous pourriez faire quelque chose comme:
model.save( { name:'new name' } )
;La
id
etPUT
méthode sera automatiquement ajouté par colonne vertébrale pour vous.OriginalL'auteur neebz