Seleccionar modelos creados dinámicamente dentro de una colección
-
12-12-2019 - |
Pregunta
Tengo un conjunto de entradas de "Nombre de persona" con la clase person
con el que estoy intentando hacer lo siguiente:cada vez que se registra una tecla en la entrada, tome el atributo de hash de datos de esa entrada y, si aún no existe una instancia de Persona con ese hash en la colección Personas, agregue un modelo.De lo contrario, simplemente actualice el modelo donde coincida el hash.
$('.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
});
}
});
En lugar de usar var person = new Person
Estoy agregando estos modelos a la colección usando Backbone. add
método.
Ahora tengo una serie de elementos cuando llamo people.models
pero no puedo entender cómo seleccionarlos.Normalmente dirías person.get('attribute')
pero no estoy seguro de cómo seleccionar el modelo si no tiene var
nombre.¿Qué podría poner en el código en lugar de //update name value where hash matches
?
Solución
checkMe debería ser una serie de modelos que estás intentando actualizar.Repitalos y use el método 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
});
}
});