我有一个对象数组如下:
$scope.clients = [
{ client: { name: 'ABC', age: '25' } },
{ client: { name: 'BCD', age: '26' } },
{ client: { name: 'CDE', age: '26' } }
];
过滤器对象(实际上这与视图中的 ng-model 绑定到过滤器和订单数组对象:
$scope.filterParams = {
nameSearch: 'ABC',
order: 'age'
};
当我尝试按client.name
更新过滤器时,列表中找不到任何内容,而order by
也不起作用:
$scope.updateFilter = function () {
var filtered;
filtered = $filter('filter')($scope.clients, { 'client.name' : $scope.filterParams.nameSearch });
filtered = $filter('orderBy')(filtered.client, $scope.filterParams.order);
$scope.filteredList = filtered;
}
$scope.$watchCollection('filterParams', function () {
$scope.updateFilter();
});
这里有人能告诉我过滤和订购清单的正确方向吗?
答案 0 :(得分:0)
调用$filter('orderBy')()
时,可以使用函数作为第二个参数。函数的输入参数是要排序的数组的项。该函数使用'<&#;,'>',' =='返回要比较的值。
function(item){
return parseInt(item.client[$scope.filterParams.order]);
}
此外,您没有对原始数组$scope.clients
进行排序,而是对筛选结果进行排序,这只是一条记录。我想知道这是不是一个错误。
这是fiddle。