在AngularJS中,有用于ng-repeats的groupBy方法。我正在使用它列出一个具有相同标题的产品列在我正在重复的数组中,并计算它的长度和总价格如下:
<pre>([\r\n\s]*(?!<\w+.*[\/]*>).*[\r\n\s]*|\s*[\r\n\s]*)<code\s+(?:class="(\w+|\w+\s*.+)")>(((?!<\/code>)[\s\S])*)<\/code>[\r\n\s]*((?!<\w+.*[\/]*>).*|\s*)[\r\n\s]*<\/pre>
这很好用,但我想在Controller中重复使用相同的计算。所以我有一个像这样的对象/数组:
<li ng-repeat="(key, value) in products | groupBy: 'title'">
<span>{{value.length}} items</span>
<strong>{{ value[0].title }}</strong>
<tt>{{ (value[0].price*value.length) | currency: '$' }}</tt>
</li>
但我无法弄清楚如何使用相同的GroupBy。
答案 0 :(得分:1)
您可以像这样注入AnguarJS过滤器:
angular.module('myApp')
.controller('MyCtrl', function($filter, $scope) {
$scope.myCollection = [{
title: 'Wut',
text: 'Wat'
}, {
title: 'Que',
text: 'paso'
}]
$scope.grouped = $filter('groupBy')($scope.myCollection, 'title');
})
以获得与指令相同的功能。文档here