【问题标题】:Filter And Order In Complex Object复杂对象中的过滤和排序
【发布时间】:2016-04-05 07:25:39
【问题描述】:

我有一个对象数组如下:

$scope.clients = [
              { client: { name: 'ABC', age: '25' } },
              { client: { name: 'BCD', age: '26' } },
              { client: { name: 'CDE', age: '26' } }
            ];

还有一个过滤器对象(实际上这与 view 中的 ng-model 绑定)用于 filterorder 数组对象:

 $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();
            });

这里有人可以告诉我过滤和排序列表的正确方向吗?

【问题讨论】:

    标签: angularjs angularjs-scope angularjs-ng-repeat angularjs-filter angularjs-orderby


    【解决方案1】:

    您可以在调用$filter('orderBy')() 时将函数用作第二个参数。函数的输入参数是要排序的数组的项。该函数返回要使用 ''、'==' 进行比较的值。

    function(item){
              return parseInt(item.client[$scope.filterParams.order]);
    }
    

    另外,您不是对原始数组$scope.clients 进行排序,而是对过滤后的结果进行排序,即只有一条记录。我想知道这是否是一个错误。

    这里是fiddle

    【讨论】:

    • 在我的小提琴中,名称为“ABC”的记录已根据需要被过滤掉了,对吧?
    猜你喜欢
    • 2018-01-16
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 2011-04-21
    • 2022-06-15
    • 2016-01-07
    • 1970-01-01
    相关资源
    最近更新 更多