【发布时间】:2013-07-21 19:30:34
【问题描述】:
假设我创建了一个 Angular 应用并编写了一些新过滤器:仅显示 odds,并且仅显示 lucky 数字。
有一个oddList 过滤器和一个luckyList 过滤器:
var app = angular.module('app', []);
app.filter('oddList', function() {
return function(items) {
var filtered = [];
angular.forEach(items, function(item) {
if (item % 2 !== 0)
filtered.push(item);
});
return filtered;
};
});
app.filter('luckyList', function() {
return function(items) {
var filtered = [];
angular.forEach(items, function(item) {
if (item === 2 || item === 7 || item === 11)
filtered.push(item);
});
return filtered;
};
});
在视图部分,我可以链接这些过滤器:
<ul><li ng-repeat="number in numbers | oddList | luckyList">{$number}</li></ul>
当这个工作正常时,我应该会看到 7 和 11 剩余。
我想为这个ng-repeat 设置我的过滤器可变。我可以做一些类似于这个过程的事情吗?
假设我将变量过滤器命名为filter:listFilter,以便在我们的控制器中,我们可以动态更新$scope.listFilter。
<ul><li ng-repeat="number in numbers | filter:listFilter">{$number}</li></ul>
以及带有伪代码的控制器:
app.controller('main', function($scope, $filter) {
$scope.numbers = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
$scope.listFilter = $filter('oddList | luckyList');
});
知道如何在控制器中链接(可变)过滤器吗?希望能够在奇数、幸运和/或两者之间切换。
【问题讨论】:
-
jsfiddle.net/Xesued/Bw77D/7 我见过的最接近的例子..