2017-11-02 7 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

가 대단히 Faly 감사 정확히 내가 원하는대로 작동합니다! 이 줄에 대한 설명을 좀 해주실 수 있습니까? 'return word? 정말 코드를 이해하기를 원하며'?'와'el' 함수에 익숙하지 않습니다. –

+0

'삼항 연산자'라고합니다. word가 true이고 right 부분 (wch는 항목) 인 경우 단어가 false 인 경우 왼쪽 부분을 반환합니다 (items.filter (el => el.word)). 따라서 if (word) { return items.filter (el => el.word)} else {돌아 가기 item} – Faly

+0

el과 quick에 대한 빠른 연구가 끝난 후, 나는 그 줄을 이해한다고 생각합니다. 도와 주셔서 정말로 고맙습니다 ! –