AngularJS自定义过滤器

时间:2014-08-20 02:09:42

标签: json angularjs angular-filters

我正在努力将控制器中的逻辑转换为过滤器。逻辑在我的API查询中有效,但是我想在已经基于routeparam过滤数据之后将其用作过滤器。

这是我的问题:

CAL.API.query(function(results) {
    $scope.calendar = results;
  var temp = [];
  var result = temp.concat.apply(temp,results.map(function(itm){ 
  return temp.concat.apply(temp, Object.keys(itm.year).map(function(key){ 
   return itm.year[key];   
}));    
}));  
  $scope.super = result;
  console.log(result);
    });  

这是我的过滤器:

angular.module('hcApp')
.filter('super', function() {
  return function(items) {
    var temp = [];
    var result = temp.concat.apply(temp,items.map(function(itm){ 
      return temp.concat.apply(temp, Object.keys(itm.year).map(function(key){ 
       return itm.year[key]; 
  }));
}));  
    return result;
  };
});

我认为过滤器没有任何问题,但由于某种原因,我认为它不起作用。

<div class="calDynamic" data-ng-repeat="n in [] | range:100">
  <div ng-repeat="cal in calendar[n].year | filterKey:month | super">
    <p>{{cal}}</p>
  </div>
</div>

filterKey:

angular.module('customFilters', []).filter('filterKey', function() {

 function comparator(a, b) {
    return (''+a).toLowerCase().indexOf((''+b).toLowerCase()) > -1;
  }

  return function(obj, searchKey) {
    var filtered = {};
    angular.forEach(obj, function(value, key) {
      if (comparator(key, searchKey)) {
        filtered[key] = value;
      }
    });
    return filtered;
  };
});

0 个答案:

没有答案