我正在努力将控制器中的逻辑转换为过滤器。逻辑在我的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;
};
});