我在如何最好地在其模型属性上过滤Backbone集合时遇到了一些问题。我的设置是这样的:
我有一个包含多个模型的集合。每个模型都有一个包含数字数组(“类型”)的属性。像这样:
- Collection
- model
- id: 1
- name
- phone
- type [3]
- model
- id: 2
- name
- phone
- type [2]
- model
- id: 3
- name
- phone
- type [1,2]
我想在这里做的是能够在模型“type”属性上过滤这个集合。 我有这个“类型”属性,因为这是一个联系人列表,每个联系人可以有几种类型。例如,该集合应该能够在无限类型上过滤。您应该能够过滤,然后输入“1”并键入“2”,然后显示模型2和模型3.原因模型1没有“类型”1。
任何好的代码示例或其他帮助都会很棒。谢谢!
答案 0 :(得分:1)
您可以使用以下代码
var filColl=myColl.filter(function(o){return _.indexOf(o.get('type'), 1) >-1 })
以下是工作代码的jsFiddle链接,以及一些示例数据。
答案 1 :(得分:0)
这里是可以过滤多种类型的代码,存储在数组
中var typesTofilter=[5,1,2];//array of type tobe search.
var f2=friends.filter(function(o){ var accept=false;
$(typesTofilter).each(function(i,val){
if(_.indexOf(o.get('type'), val) >-1){
accept= true;
}
})
return accept;
});
这是jsFiddle。