【问题标题】:AngularJs Filter with groupby in ControllerAngularJs过滤器与控制器中的groupby
【发布时间】:2017-03-16 06:56:41
【问题描述】:

我有一个 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 对象中。所以我需要在控制器而不是视图中进行过滤。如何实现?

预期的结果是这样的

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

【问题讨论】:

  • 使用 $filter 来过滤控制器中的数据
  • 我解决了 var newData = $filter('groupBy')(OriginalData, 'FieldName');

标签: angularjs angularjs-filter


【解决方案1】:

由于 angularjs 中没有默认过滤器 groupBy 所以你必须为此做一个过滤器 并且您可以在控制器中使用任何过滤器,如

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

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

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

【讨论】:

    【解决方案2】:

    如果您在 js 代码中需要它。您可以使用角度过滤器库的注入方法。过滤器“分组依据”是这个库的一部分。像这样使用它。

    function controller($scope, $http, groupByFilter) {     
    
       var groupedData = groupByFilter(originalArray, 'groupPropName');
    
    }
    

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

    【讨论】:

      猜你喜欢
      • 2014-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多