假设我创建一个Angular应用程序并编写一些新的过滤器:仅显示赔率,并仅显示幸运数字.
有一个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(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的过滤器变量.我能做些什么与这个过程类似吗?
假设我将变量过滤器命名为: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');
- });
知道如何在控制器中链接(变量)过滤器吗?希望能够在奇怪,幸运和/或两者之间切换.
一种方法是使用函数返回过滤后的数据:
- function MainCtrl($scope,15];
- $scope.filteredNumbers = function() {
- var result = $scope.numbers;
- if ($scope.oddListEnabled) {
- result = $filter('oddList')(result);
- }
- if ($scope.luckyListEnabled) {
- result = $filter('luckyList')(result);
- }
- return result;
- };
- }
和模板:
- <ul>
- <li ng-repeat="number in filteredNumbers()">
- {{number}}
- </li>
- </ul>