2014-02-17 3 views
3

각 요소에 대한 확인란이있는 요소 목록이 있습니다. 모든 요소를 ​​선택하려면 checkAll 단추를 추가했습니다.검색 결과에서 보이는 요소 만 선택하는 방법

http://jsbin.com/dipumemo/3 (edit)

어떻게 내 사용자 인터페이스를 개선하고 내가 "checkAll"버튼을 클릭하는 경우에만 보이는 요소를 선택할 수 있습니까?

내 워크 플로우 : 필터

  1. APPEND 1 (디스플레이 숨기기 : 없음, 목록 2) checkboxAll에
  2. 클릭
을 확인 목록 1
  • 만보기 클리어 필터

    enter image description here enter image description here

    내 HTML :

    <div ng-app="listsModule"> 
        <div ng-controller="listsController"> 
         <input type="text" id="filter_lists" ng-model="search" placeholder="Search a list"> 
    
         <table> 
          <thead> 
          <tr> 
           <th><input type="checkbox" ng-model="checkAll"/></th> 
           <th>List name</th> 
          </tr> 
          </thead> 
          <tbody> 
          <tr ng-repeat="list in lists | filter:search | orderBy:'name'"> 
           <td><input type="checkbox" ng-model="list.isSelected" ng-checked="checkAll"></td> 
           <td>{{ list.name }}</td> 
           <td>{{ list.isSelected }}</td> 
          </tr> 
          </tbody> 
         </table> 
        </div> 
    </div> 
    

    내 자바 스크립트 :

    var app = angular.module('listsModule', []); 
    
    app.controller('listsController', function ($scope) { 
        $scope.lists = [ 
         {"id": 39, "name": "list1", "isSelected": false}, 
         {"id": 40, "name": "list2", "isSelected": false} 
        ] 
    }); 
    
  • +0

    그것은 당신이 그것을 볼 수 있습니다, 실제로 약간의 일치인가? 필터를 지우고 "모두 확인"을 선택하면 * 보이는 모든 것이 ** 확인되어야합니다. – dfsq

    +0

    @ dfsq는 질문입니까? 내 질문을 개선 할 수 있습니까? –

    +0

    당신이 실제로 성공하면 응용 프로그램이 일관성을 잃어 버리게되므로 실제로 사용자 인터페이스를 악화 시키려하고 있다는 것을 의미합니다. – dfsq

    답변

    2

    이 목록은 현재 범위에 필터링 된 목록에 액세스 할 수 있습니다 필터링하는 방식을 변경. 그런 다음 필터링 된 목록에서 선택한 항목을 가져올 수 있습니다. checkAll에 시계를 추가하면 필터링 된 항목을 선택할 수 있습니다.

    HTML :

    <div ng-app="listsModule"> 
        <div ng-controller="listsController"> 
         <input type="text" id="filter_lists" ng-model="search" placeholder="Search a list"> 
    
         <table> 
          <thead> 
          <tr> 
           <th><input type="checkbox" ng-model="checkAll"/></th> 
           <th>List name</th> 
          </tr> 
          </thead> 
          <tbody> 
          <tr ng-repeat="list in filtered = (lists | filter:{name:search}) | orderBy:'name'"> 
           <td><input type="checkbox" ng-model="list.isSelected"></td> 
           <td>{{ list.name }}</td> 
           <td>{{ list.isSelected }}</td> 
          </tr> 
          </tbody> 
         </table> 
         <div>Selected: 
          <div ng-repeat="list in filtered | filter:{isSelected:true} | orderBy:'name'"> 
           {{list.name}} 
          </div> 
         </div> 
        </div> 
    </div> 
    

    자바 스크립트 :

    var app = angular.module("listsModule", []); 
    
    app.controller('listsController', ['$scope', function($scope) { 
        $scope.lists = [ 
         {"id": 39, "name": "Fluffy", "isSelected": false}, 
         {"id": 40, "name": "Muffy", "isSelected": false}, 
         {"id": 41, "name": "Dingo Jr.", "isSelected": false}, 
         {"id": 42, "name": "Bertram", "isSelected": false} 
        ]; 
    
        $scope.$watch('checkAll', function(newValue, oldValue) { 
         if ($scope.filtered) 
         for (i=0; i<$scope.filtered.length; i++) { 
          $scope.filtered[i].isSelected = newValue; 
         } 
        }); 
    }]); 
    
    +0

    매력처럼 작동 해 주셔서 감사합니다. 솔루션은 꽤 깨끗합니다. 나는 jsbin을 추가했다. –

    관련 문제