在集合中选择动态创建的模型

时间:2012-10-01 19:46:55

标签: backbone.js backbone.js-collections

我有一组带有类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

1 个答案:

答案 0 :(得分:1)

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
  });
}
});