使用ng-table和selectize进行自定义过滤/订购

时间:2016-10-18 08:34:28

标签: javascript angularjs ngtable selectize.js

我的一个ng-table列包含一个selectize下拉列表。此列的值是另一个表的外键。我希望显示此键所代表的行的另一个属性(名称),而不是显示此键。 我的数据位于一个名为table的数组中。

我使用另一个数组fkTable正确显示下拉列表。

   <selectize ng-model="row[col.name]"
                       options='fkTable'
                       config='fkConfig'">

其中fkConfig:

 $scope.fkConfig = {
        maxItems: 1,
        valueField: 'id',
        labelField: 'name',
        searchField: 'name'
    };

现在我希望能够根据外部行名称过滤和排序此列,而不是id。

我试图将这些ID映射到他们的名字:

$scope.foreignRowNames = {
    0:"not grouped"
    1:"Google"
    14:"Youtube" 
}

并为此特定列创建自定义过滤器:

function filterSelectizeColumn(table, searchTerm) {
  for (var i = 0; i < table.length; i++) {
          var fkValue = table[i].fk;
          var foreignRowName = $scope.foreignRowNames[fkValue]];

          if (foreignRowName.indexOf(searchTerm) == -1) {
               table = table.splice(i, 1);
          }
    }
}

但是,由于两个图书馆的普及,这似乎是一种尴尬和低效的方式,我认为这是一个常见的问题。

我的问题是如何有效地为此外键列创建自定义过滤器。

1 个答案:

答案 0 :(得分:0)

我选择的解决方案:

  • 将所有外键替换为其对应的名称
  • 进行编辑时,将名称转换回它们代表的键