【问题标题】:Filter an ng-repeat that is displaying an object?过滤显示对象的 ng-repeat?
【发布时间】:2025-12-07 22:55:02
【问题描述】:

当我使用 ng-repeat 显示对象时,过滤器不起作用。

如果相同的对象对象是对象数组,则一切都按预期工作。

这是一个演示 http://plnkr.co/edit/hBEk34U9SLlfoI5Lhitq?p=preview 的 plunker

Test.controller('TestController', function($scope) {
  $scope.data = {
    1: {value: '1'},
    2: {value: '2'},
    3: {value: '3'},
    4: {value: '1'},
    5: {value: '2'},
    6: {value: '3'},
    7: {value: '1'},
    8: {value: '2'},
    9: {value: '3'}    
  };
  $scope.filters = {}
});

<input type="text" ng-model="filters.value">
<div ng-repeat="(id, thing) in data | filter: filters">{{thing.value}}</div>

【问题讨论】:

标签: angularjs angular-filters


【解决方案1】:

如果这没有关闭,答案是您不能对对象使用内置过滤器。就我而言,我只是这样做了:

<li ng-repeat="product in products | toArray | filter:filters">

# Convert to array
SingularAdmin.filter 'toArray', () ->
    return (items) ->
        if !items
            return []

        filtered = []
        angular.forEach items, (item) ->
            filtered.push(item)

        return filtered

【讨论】: