使用angularjs过滤器和_.groupBy

时间:2014-06-16 13:10:22

标签: javascript angularjs

这是我创建的一个简单示例,用于复制我的问题。在我的控制器中,我有一群人:

$scope.people = [
    { name: 'fred', age: 20 },
    { name: 'bob', age: 22 },
    { name: 'jane', age: 24 },
    { name: 'mary', age: 22 },
    { name: 'ben', age: 24 },
    { name: 'sarah', age: 21 },
];

我定义了一个过滤器:

.filter('grouped', function () {
    return function (input) {
        return _.groupBy(input, 'age');
    }
})

您可能会注意到我使用Lo-Dash来执行分组。

在我看来,我有一个列表定义:

<div class="list" ng-repeat="personGroup in people | grouped">
    {{ $index }}
    <div class="list" ng-repeat="person in personGroup">
        {{ person.name }}
    </div>
</div>

我得到了我之后的结果,但是我的开发者控制台中出现了一堆错误。

  

https://docs.angularjs.org/error/ $ rootScope / infdig?P0 = 10

我理解为什么我会收到错误。这在上面的链接中详细解释。我只是不知道实现我之后的结果的正确方法。

2 个答案:

答案 0 :(得分:2)

在分组人员时创建新的Array对象时,我根本不会使用过滤器。最简单的解决方案是在控制器内进行分组:

...
$scope.groups = _.groupBy($scope.people, 'age');
...

您的ng-repeat属性将如下所示:

ng-repeat="personGroup in groups"

答案 1 :(得分:0)

您使用的角度是什么版本?我没有收到任何错误:

http://plnkr.co/edit/bbDGjHWMGZx5GmNcggaw?p=preview