2017-11-02 3 views
2

私は真偽スキルの人のリストを持っており、各スキ​​ルに関連するボタンでデータをフィルタリングしたいと思います。AngularJS - トグルボタン付きのバインドフィルタ

私はスキルをクリックしたときにトグルボタンを作成し、スキルが真であれば人々だけを示すフィルタを作成します。どちらも機能しています。

トグルボタンでフィルタをバインドするにはどうすればよいですか?ボタンがアクティブな場合、フィルターはアクティブです。そうでない場合、フィルタはそうではありません。クリックで

ボタン

<button id="word" ng-class="{'active-word': wordActive}" ng-click="wordButton()">Word</button> 

app.controller('skillsCtrl', function ($scope) { 
     $scope.wordActive = false; 
     $scope.wordButton = function() { 
     $scope.wordActive = !$scope.wordActive; 
} 

フィルター

app.filter('wordskills', function() { 
    return function (items) { 

    var filtered = []; 
    for (var i = 0; i < items.length; i++) { 
     var item = items[i]; 
     if (item.word == true) { 
     filtered.push(item); 
     } 
    } 
    return filtered; 

    }; 
}); 

ビュー

<div class="container" ng-repeat="person in group | wordskills"> 

答えて

0

、あなたは変数を切り替えることができますフィルタに渡します。この変数が真である場合は、フィルタリングのみを行います。

<button ng-click="word = !word" id="word" ng-class="{'active-word': wordActive}" ng-click="wordButton()">Word</button> 

<div class="container" ng-repeat="person in group | wordskills: word"> 

app.filter('wordskills', function() { 
    return function (items, word) { 
     return word ? items.filter(el => el.word) : items; 
    }; 
}); 
app.controller('skillsCtrl', function ($scope) { 
     $scope.word = false; 
} 
+0

ありがとうございます。この行についていくつか説明してください。 'return word? 私は本当にコードを理解したいと思いますが、私は '?'と 'el'関数に慣れていません –

+0

これは '三項演算子'と呼ばれています。単語が偽ならば、単語が真で右の部分(wchはitems)ならば、左の部分を返します(items.filter(el => el.word)です)。if(word){ return items.filter(el => el.word)} else {返品アイテム} – Faly

+0

elとquickについての簡単な調査の後、私はそのラインを理解していると思います。あなたの助けをありがとう! –

関連する問題