假设我创建一个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;
};
});
Run Code Online (Sandbox Code Playgroud)
在视图部分,我可以链接这些过滤器:
<ul><li ng-repeat="number in numbers | oddList | luckyList">{$number}</li></ul>
Run Code Online (Sandbox Code Playgroud)
当这工作时,我应该看到7并11保持.
我想让我的滤镜变量为此ng-repeat.我能做些什么与这个过程类似吗?
假设我命名变量过滤器,filter:listFilter以便在我们的控制器中,我们可以动态更新$scope.listFilter.
<ul><li ng-repeat="number in numbers | filter:listFilter">{$number}</li></ul>
Run Code Online (Sandbox Code Playgroud)
和伪代码的控制器:
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');
});
Run Code Online (Sandbox Code Playgroud)
知道如何在控制器中链接(变量)过滤器吗?希望能够在奇怪,幸运和/或两者之间切换.
Wag*_*sco 12
一种方法是使用函数返回过滤后的数据:
function MainCtrl($scope, $filter) {
$scope.numbers = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
$scope.filteredNumbers = function() {
var result = $scope.numbers;
if ($scope.oddListEnabled) {
result = $filter('oddList')(result);
}
if ($scope.luckyListEnabled) {
result = $filter('luckyList')(result);
}
return result;
};
}
Run Code Online (Sandbox Code Playgroud)
和模板:
<ul>
<li ng-repeat="number in filteredNumbers()">
{{number}}
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
这是一个傻瓜:http://plnkr.co/edit/4ectDA?p = preview
| 归档时间: |
|
| 查看次数: |
4968 次 |
| 最近记录: |