Sélection de modèles créés dynamiquement dans une collection
-
12-12-2019 - |
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
?
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
});
}
});