30 votes

Backbone - utilisation d'un nom de champ différent pour l'identifiant

Je porte une vieille application pour utiliser backbone.js (avec un peu de chance) Le problème est qu'aucun des différents objets du système n'utilise 'id' pour l'id - chaque objet est différent. En lisant un peu, j'ai trouvé la solution ci-dessous lors de l'initialisation du Backbone.Model.

   initialize: function(){
    this.idAttribute = 'user_ID';
    this.set({'id':this.get('user_ID')});
 }

Je crains cependant que cette approche ne me mette à mal au fur et à mesure que je développerai ma colonne vertébrale. Est-ce que quelqu'un a de l'expérience dans ce domaine ? Tout conseil sera le bienvenu.

edit : Je viens d'appeler isNew() sur le modèle et j'ai obtenu true, même si l'id est maintenant à 1. ///////////////////////////////////////////

L'utilisation de ce qui suit semble régler le problème.

User = Backbone.Model.extend({
idAttribute : 'user_ID'

})

49voto

timDunham Points 2893

Lorsque vous utilisez l'attribut idAttribute, backbone conserve la valeur de l'attribut id en synchronisation avec la propriété user_ID propriété. Elle est normalement utilisée lorsque vous définissez votre classe

var UserModel = Backbone.Model.extend({
    idAttribute: 'user_ID',
    initialize: function() {
        //do stuff
    }
});

var me = new UserModel({user_ID: 1234, name: 'Tim'});
console.log(me.id); //1234
console.log(me.get('user_ID')); //1234
console.log(me.isNew()); //false

var me2 = new UserModel({name: 'newUser'});
console.log(me2.isNew()); //true

Bonne chance

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X