2014-05-02 34 views
0

有了这样过滤Backgrid列由数

1|2|3 
4|1|1 
1|1|1 

表现在我想用数> = 3列过滤,我会得到:

1|2|3 
4|1|1 

的ClientFilter库似乎只用于字符串(正则表达式实现)。有没有另外一种方法呢?

回答

0

Backgrid类是容易扩展,因此,所有你需要做的就是创建自己的过滤器类覆盖ClientSideFilter.makeMatcher功能,像这样:

var GreaterThanClientFilter = Backgrid.Extension.ClientSideFilter.extend({ 
    makeMatcher: function(query){ 
     var q = 1*query; 
     return function (model) { 
      if (isNaN(q)) return false; 
      var keys = this.fields || model.keys(); 
      for (var i = 0, l = keys.length; i < l; i++) { 
       value = model.get(keys[i]); 
       if (!isNaN(value) && (1*value >= q)) 
        return true; 
      } 
      return false; 
     }; 
    } 
}); 

var filter = new GreaterThanClientFilter({ 
    collection: collection 
}); 

运行例如:JSFiddle