角度过滤器ng重复到单独的列表中
Angular filter ng-repeat into seperate lists
我有一个对象,我已经展平以检索特定项目(仅)我正在重复运行。我想知道我是否可以让重复者以小组形式吐出这些项目。
每个项目都有一个类别键,我只想将它们放在按类似类别分组的 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 个项目,所以我想知道是否有某种方法可以写几行并让角度处理分布而不是"硬编码"每个类别。另外 - 类别可能会在以后更改,如果开发人员不必进来更改硬编码类别,那就太好了。
作为参考,对象看起来像这样 -
$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 这样的库,这真的很容易:
在控制器中:
$scope.myObjGrouped= _.groupBy($scope.myObject, 'category');
在您的 HTML 中:
<div ng-repeat="(category, objects) in myObjGrouped">
<div ng-repeat="item in objects">
{{item.name}}
</div>
</div>
相关文章:
- (取消)使用单独的复选框激活复选框列表
- Codrops页面转换.如何创建单独的按钮,而不是列表项目的效果
- 使用Angular排序到单独的列表中
- Vue.js"track-by-$index”;,如何单独呈现列表项
- 使用php创建的下拉列表中的选择单独填充文本区域
- 角度过滤器ng重复到单独的列表中
- 尝试将长列表排序为单独的列
- 将单个 json 拆分为单独的列表
- 使用 C# MVC 将值列表放入单独的文本框中
- 如何在C# MVC的VIew中将列表数组拆分为单独的数组
- 如何制作一个项目列表,可以使用 Angular JS 单独切换
- 根据一个子jQuery单独隐藏下拉列表
- 分开一个段落列表,给每个单词单独的CSS
- 如何以大写字母单独显示下拉列表的选定值
- 嵌套列表-在单独的一行上显示每个ul级别
- 使用jquery填充UL列表,但不调用单独的JavaScript函数
- 如何将参数的字符串列表传递给函数,并将它们作为单独的参数分配
- React / Redux—假设我们有两个单独的待办事项列表,已完成的和未完成的
- 使用jQuery在单独的无序列表中查找具有匹配类名的列表项
- AngularJS:使用列表项作为单独列表的变量