代码之家  ›  专栏  ›  技术社区  ›  Trent

AngularJS用户界面网格重新使用自定义过滤器

  •  0
  • Trent  · 技术社区  · 7 年前

    我有一个基本的网格,其中有两列是范围,即10-50、0-9等,我已经在其中一个columndef上编写了一个自定义过滤器;

    filter: {
      condition: function(searchTerm, cellValue) { ... }
    }
    

    这个过滤器工作得很好,但我想把它去掉,重新使用,只是我不知道怎么用。

    我试着在控制器中将其定义为 function rangeFilter(...) vm.rangeFilter = rangeFilter 然后将其分配给条件 grid.appScope.filterRange(searchTerm, cellValue) 但那不管用。

    我真的不知道该怎么做,我还没能在文档中找到任何东西,也没能通过谷歌找到。

    这是它的一个动作; http://next.plnkr.co/edit/mbtXzfWqBg8FIALu

    1 回复  |  直到 7 年前
        1
  •  1
  •   Jaydo    7 年前

    正如您所做的,将函数移出列定义。

    function rangeFilter() {
        ...
    }
    

    在列定义中传递对两者中函数的引用。

    vm.gridOptions = {
        ...
        columnDefs: [
          // default
          { field: 'name' },
          { field: 'range', cellFilter: 'range', filter: {condition: rangefilter}},
          // I want to reuse the same filter as 'range' for this column somehow...
          { field: 'anotherRange', cellFilter: 'range', filter: {condition: rangefilter}}
        ],
        ...
      };
    

    Plunker