我有一个已展平的对象,用于(仅)检索我正在重复运行的特定项目。我想知道是否可以让重复者将这些项目分成小组。
每个项目都有一个类别键,我只想将它们放入按类似类别分组的 html 中。
我可以做这样的事情 -
<div ng-repeat="item in myObject | category1">{{name}}</div>
<div ng-repeat="item in myObject | category2">{{name}}</div>
<div ng-repeat="item in myObject | category3">{{name}}</div>
然而,对象中有 15 个左右的类别和大约 80-100 个项目,所以我想知道是否有某种方法可以编写几行并让 Angular 处理分布,而不是“硬编码”每个类别。另外 - 类别稍后可能会更改,如果开发人员不必介入并更改硬编码类别,那就太好了。
作为引用,该对象看起来像这样 -
$scope.myObject = [{'name' : item1' , 'category' : 'category1'},{'name' : item2' , 'category' : 'category2'}];
我的第一个猜测是通过某种过滤来运行对象,该过滤会输出要重复的类别数组,然后在该重复中,通过重复中的当前项目过滤原始对象 -
//categories is myObject filtered down to an array of categories (1 of each)
<div ng-repeat="category in categories">
<div ng-repeat="item in myObject | category">
{{item.name}}
</div>
</div>
我想知道是否有更好或更优雅的方法来处理这个问题?感谢您的阅读!
最佳答案
如果您使用像 lodash 这样的库,这真的很容易:
在你的 Controller 中:
$scope.myObjGrouped= _.groupBy($scope.myObject, 'category');
在 HTML 中:
<div ng-repeat="(category, objects) in myObjGrouped">
<div ng-repeat="item in objects">
{{item.name}}
</div>
</div>
关于javascript - Angular 过滤器 ng-repeat 到单独的列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28238289/