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?

¿Fue útil?

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
  });
}
});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top