7

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>

これが機能するとき、私は見711残ります。

これに対してフィルター変数を作成したいと思います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');
});

コントローラーで (可変) フィルターをチェーンする方法はありますか? 奇数、幸運、および/またはその両方を切り替えることができるようにしたいと考えています。

4

1 に答える 1