Question

J'ai un ensemble d'entrées "Nom de personne" avec la classe person avec lequel j'essaie de faire ce qui suit :chaque fois qu'une clé est enregistrée dans l'entrée, récupérez l'attribut data-hash de cette entrée, et s'il n'y a pas déjà une instance de Person avec ce hachage dans la collection People, ajoutez un modèle.Sinon, mettez simplement à jour le modèle où le hachage correspond.

$('.person').keyup(function(){

var myHash = $(this).attr('data-hash'),
 myName = $(this).val(),
 checkMe = people.where({'hash':myHash});

if ( checkMe.length > 0 ){

//update name value where hash matches

}

else {
 people.add({
   'name':myName,
   'hash':myHash
  });
}
});

À la place d'utiliser var person = new Person J'ajoute ces modèles à la collection en utilisant Backbone's add méthode.

Alors maintenant, j'ai un certain nombre d'éléments lorsque j'appelle people.models mais je n'arrive pas à comprendre comment les sélectionner.Normalement tu dirais person.get('attribute') mais je ne sais pas comment sélectionner le modèle s'il n'en a pas var nom.Que pourrais-je mettre dans le code à la place de //update name value where hash matches?

Était-ce utile?

La solution

checkMe devrait être un tableau de modèles que vous essayez de mettre à jour.Parcourez-les et utilisez la méthode set :

$('.person').keyup(function(){

var myHash = $(this).attr('data-hash'),
 myName = $(this).val(),
 checkMe = people.where({'hash':myHash});

if ( checkMe.length > 0 ){
  _.each(checkMe, function(person){
    person.set({
      'name':myName,
    });
  });
}

else {
 people.add({
   'name':myName,
   'hash':myHash
  });
}
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top