按编号过滤Backgrid列

时间:2014-05-02 17:41:33

标签: backbone.js backgrid

使用这样的表格

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

现在我想按数字> = 3的列进行过滤,我会得到:

1|2|3
4|1|1

ClientFilter库似乎只针对字符串(正则表达式实现)。还有另一种方法吗?

1 个答案:

答案 0 :(得分: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