使用ng-table自定义过滤/排序并选择

Custom filtering / ordering with ng-table and selectize

本文关键字:排序 选择 过滤 ng-table 自定义 使用      更新时间:2023-09-26

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

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

   <selectize ng-model="row[col.name]"
                       options='fkTable'
                       config='fkConfig'">
where 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);
          }
    }
}

但这似乎是一种尴尬和低效的方式来解决一些问题,我本以为这是一个比较常见的问题,因为这两个库都很流行。

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

我的解决方案:

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