AngularJs在Controller中使用groupby进行过滤

时间:2017-03-16 06:56:41

标签: angularjs angularjs-filter

我在视图中有一个JSON过滤器

<div ng-repeat="(key, value) in TData.Files
            | map: toLocaleDate
            | groupBy: 'da'">
<div><strong>{ Date:</strong> "{{ key }}" , Count: {{value.length}} } ,</div>

在控制器中使用过滤器

$scope.toLocaleDate = function (e) {
                var date = e.da.split(" ");
                e.da = date[0];
                return e;
            };

现在我希望将过滤的数据转换为另一个JSON对象。所以我需要在控制器中而不是在View中进行过滤。如何实现?

预期结果如

[{'Date':"2012-01-12", Count:5},{'Date':"2012-01-13", Count:8}, ....]

2 个答案:

答案 0 :(得分:0)

由于angularjs中没有默认过滤器groupBy所以你必须为它做一个过滤器 你可以使用控制器中的任何过滤器,只是解释为

注入$filter依赖项,在控制器中只使用简单语法

$filter('filtername')('arraydata', 'other arguments');

http://jsfiddle.net/R8YZh/35/

答案 1 :(得分:0)

如果您需要使用js代码。您可以使用角度滤镜lib的注入方法。筛选器“ group by”是此库的一部分。像这样使用它。

function controller($scope, $http, groupByFilter) {     

   var groupedData = groupByFilter(originalArray, 'groupPropName');

}

https://github.com/a8m/angular-filter/wiki/Common-Questions#inject-filters