如何在角度中同时使用多个字段进行排序?按组分组,然后按分组示例
$scope.divisions = [{'group':1,'sub':1}, {'group':2,'sub':10}, {'group':1,'sub':2},{'group':1,'sub':20},{'group':2,'sub':1},
{'group':2,'sub':11}];
我希望将其显示为
group:子组
1 - 1
1 - 2
1 - 20
2 - 1
2 - 10
2 - 11
<select ng-model="divs" ng-options="(d.group+' - '+d.sub) for d in divisions | orderBy:'group' | orderBy:'sub'" />
7 回答
请看这个:
http://jsfiddle.net/JSWorld/Hp4W7/32/
有两种方法可以使用AngularJs过滤器,一种在HTML中使用{{}},一种在实际的JS文件中......
您可以使用以下方法解决问题:
如果您在HTML中使用它或使用类似的东西:
反面是可选的,它接受一个布尔值,如果它是真的,它会为你反转数组,非常方便地反转你的数组......
可以通过在angular中使用'orderBy'过滤器来完成排序 .
两种方式:1 . 从视图2.从控制器
句法:
例如:
句法:
例如:
用户数组而不是多个orderBY
确保最终用户的排序不复杂 . 我一直认为对组和子组进行排序有点复杂 . 如果它是技术最终用户,那可能没问题 .
如果你想对控制器内的多个字段进行排序,请使用此方法
另见https://docs.angularjs.org/api/ng/filter/orderBy
我写了这个方便的部分来按对象的多个列/属性进行排序 . 单击每个连续列后,代码会存储单击的最后一列,并将其添加到不断增加的单击列字符串名称列表中,并将它们放在名为sortArray的数组中 . 内置的Angular“orderBy”过滤器只是读取sortArray列表,并按存储在那里的列名的顺序对列进行排序 . 因此,最后一次单击的列名称将成为主要有序过滤器,前一个名称将单击下一个优先级,等等 . 相反的顺序会立即影响所有列的顺序,并为完整的数组列表集切换升序/降序: