In this plunk我有show-filter=true
的ngTable。其中一列(组名称)显示一个字符串,该字符串是另一列(组)的函数。问题是我无法按群组名称进行过滤,因为它是"派生的"柱。如何按组名过滤?
HTML:
<table ng-table="tableParams" class="table table-bordered" show-filter="true">
<tbody>
<tr ng-repeat="u in $data">
<td title="'User ID'" filter="{ uid: 'text' }">
{{ u.uid }}
</td>
<td title="'Name'" filter="{ nm: 'text' }">
{{ u.nm }}
</td>
<td title="'Group ID'" filter="{ ugr: 'text' }">
{{ u.ugr }}
</td>
<td title="'Group Name'" filter="{ groupName(u.ugr): 'text' }">
{{ groupName(u.ugr) }}</td>
</tr>
</tbody>
</table>
使用Javascript:
var app = angular.module('app', ['ngTable']);
app.controller('myCtl', function($scope, NgTableParams) {
$scope.data = [{
uid: 'User 1',
nm: 'Name 1',
ugr: 1
}, {
uid: 'User 2',
nm: 'Name 2',
ugr: 2
}, {
uid: 'User 3',
nm: 'Name 3',
ugr: 2
}];
$scope.groupName = function(group){
if (group==1)
return 'AAA';
else
return 'BBB';
};
$scope.tableParams = new NgTableParams({
count: 5
}, {
data: $scope.data
});
});
答案 0 :(得分:1)
您可以在控制器中进行分组,以免给您带来麻烦。
我使用map函数进行验证以设置组值,然后将其显示为普通文本过滤器。
地图功能如下
$scope.data = [{
uid: 'User 1',
nm: 'Name 1',
ugr: 1
}, {
uid: 'User 2',
nm: 'Name 2',
ugr: 2
}, {
uid: 'User 3',
nm: 'Name 3',
ugr: 2
}].map(function(x){x['group'] = x.ugr === 1 ? 'AAA' : 'BBB';return x;});
以下是相同的演示,请告诉我这是否对您有帮助。