Выбор динамически создаваемых моделей в коллекции
-
12-12-2019 - |
Вопрос
У меня есть набор входных данных «Имя человека» с классом person
с которым я пытаюсь сделать следующее:каждый раз, когда во входных данных записывается клавиша, извлекайте атрибут хэша данных этого входа и, если в коллекции People еще нет экземпляра Person с этим хешем, добавьте модель.В противном случае просто обновите модель, в которой совпадает хэш.
$('.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
});
}
});
Вместо использования var person = new Person
Я добавляю эти модели в коллекцию с помощью Backbone. add
метод.
Итак, теперь у меня есть несколько элементов, когда я звоню people.models
но я не могу понять, как их выбрать.Обычно вы бы сказали person.get('attribute')
но я не уверен, как выбрать модель, если ее нет var
имя.Что я мог бы добавить в код вместо //update name value where hash matches
?
Решение
checkMe должен представлять собой массив моделей, которые вы пытаетесь обновить.Переберите их и используйте метод 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
});
}
});