在多个模型属性上过滤Backbone集合

时间:2014-06-18 07:22:24

标签: javascript backbone.js filter

我在如何最好地在其模型属性上过滤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。

任何好的代码示例或其他帮助都会很棒。谢谢!

2 个答案:

答案 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