javascript - 使用 angularjs 过滤器和 _.groupBy

标签 javascript angularjs

这是我为重现问题而创建的一个简单示例。在我的 Controller 中,我有一群人:

$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

我明白为什么会出现错误。这在上面的链接中有详细解释。我只是不知道实现我想要的结果的正确方法。

最佳答案

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

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

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

ng-repeat="personGroup in groups"

关于javascript - 使用 angularjs 过滤器和 _.groupBy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24244549/

相关文章:

twitter-bootstrap - 使用 ng-repeat 创建 "grid"布局

AngularJS - $httpBackend 无法读取嵌套的 JSON 属性

javascript - 结合 AngularJS、jQueryUI、Angular-Drag-Drop 排序列表

javascript - 在 JavaScript 中保留大小写的动态正则表达式

javascript - 比较性能 MathJax vs MathQuill vs Katex

javascript - Controller 中未定义 Angular 工厂

javascript - div 在 jQuery.show() 之后的位置;

javascript - 使用正则表达式解析 URL 查询参数

javascript - 在 AngularJS 中,如何在 URL 哈希上添加 $watch?

angularjs - 在 ui-grid 3.0 中标记修改后的单元格/行 $dirty