Selecionando modelos criados dinamicamente em uma coleção
-
12-12-2019 - |
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
?
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
});
}
});