2017-10-03 9 views
0

In this plunk 나는 show-filter=true과 함께 ngTable을가집니다. 하나의 열 (그룹 이름)은 다른 열 (그룹)의 기능을 나타내는 문자열을 표시합니다. 문제는 "파생 된"열이므로 그룹 이름별로 필터링 할 수 없다는 것입니다. 그룹 이름별로 필터링하는 방법?함수를 사용하여 ngTable 필터링

HTML :

<table ng-table="tableParams" class="table table-bordered" show-filter="true"> 
     <tbody> 
      <tr ng-repeat="u in $data"> 
       <td title="'User ID'" filter="{ uid: 'text' }"> 
        {{ u.uid }} 
       </td> 
       <td title="'Name'" filter="{ nm: 'text' }"> 
        {{ u.nm }} 
       </td> 
       <td title="'Group ID'" filter="{ ugr: 'text' }"> 
        {{ u.ugr }} 
       </td> 
       <td title="'Group Name'" filter="{ groupName(u.ugr): 'text' }"> 
        {{ groupName(u.ugr) }}</td> 
      </tr> 
     </tbody> 
    </table> 

자바 스크립트 : 당신은 그냥 컨트롤러의 그룹화는 당신에게 문제를 저장하기 위해 할 수있는

var app = angular.module('app', ['ngTable']); 

app.controller('myCtl', function($scope, NgTableParams) { 

     $scope.data = [{ 
      uid: 'User 1', 
      nm: 'Name 1', 
      ugr: 1 
     }, { 
      uid: 'User 2', 
      nm: 'Name 2', 
      ugr: 2 
     }, { 
      uid: 'User 3', 
      nm: 'Name 3', 
      ugr: 2 
     }]; 


     $scope.groupName = function(group){ 
      if (group==1) 
       return 'AAA'; 
      else 
       return 'BBB'; 
     }; 


     $scope.tableParams = new NgTableParams({ 
      count: 5 
     }, { 
      data: $scope.data 
     }); 

}); 

답변

1

.

나는지도 값을 설정하기위한 유효성 검사를 위해 map 함수를 사용했다. 그런 다음 일반 텍스트 필터로 표시했다. 다음은

$scope.data = [{ 
      uid: 'User 1', 
      nm: 'Name 1', 
      ugr: 1 
     }, { 
      uid: 'User 2', 
      nm: 'Name 2', 
      ugr: 2 
     }, { 
      uid: 'User 3', 
      nm: 'Name 3', 
      ugr: 2 
     }].map(function(x){x['group'] = x.ugr === 1 ? 'AAA' : 'BBB';return x;}); 

을 다음과 같은위한 데모와 같이

지도 기능이며,이 당신을 도움이되는지 알려주세요.

Plunkr Demo