2014-05-02 32 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