Pergunta

Eu tenho um conjunto de entradas "Nome da pessoa" com a classe person que estou tentando fazer o seguinte com:cada vez que um keyup é registrado na entrada, pegue o atributo data-hash dessa entrada e, se ainda não houver uma instância de Person com esse hash na coleção People, adicione um modelo.Caso contrário, basta atualizar o modelo onde o hash corresponde.

$('.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
  });
}
});

Ao invés de usar var person = new Person Estou adicionando esses modelos à coleção usando Backbone's add método.

Então agora tenho vários elementos quando ligo people.models mas não consigo descobrir como selecioná-los.Normalmente você diria person.get('attribute') mas não tenho certeza de como selecionar o modelo se ele não tiver var nome.O que eu poderia colocar no código em vez de //update name value where hash matches?

Foi útil?

Solução

checkMe deve ser uma série de modelos que você está tentando atualizar.Itere através deles e use o 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top