2013-10-30 8 views
6

나는 ng-table을 사용하고 있습니다.하나의 텍스트 상자로 모든 열 데이터를 기반으로 행을 필터링하는 방법

나는 example에 주어진 필터를 사용하려고했지만 각 열을 필터링하기 위해 별도의 텍스트 상자가 있어야합니다.

하지만 달성하고자하는 것은 모든 열 데이터를 기반으로 모든 행을 검색하는 하나의 텍스트 상자입니다.

어떻게하면됩니까?

jquery datatable 검색 상자와 똑같습니다.

+0

는 사용자 정의 예를 필터링 작업을 시도해 봤어을? – charlietfl

+0

@charlietfl ya 나는 하나의 컬럼을 기반으로 필터링을하는 사용자 정의 필터를 시도했다. – Viswa

+1

이 테이블 시스템을 알지 못한다.하지만 예제 14를 보자. 외부 데이터 컨트롤. 데이터 세트에서 시계를 만들고 직접 변경할 수 있습니다. 원래 데이터의 복사본을 유지하고 사용자가 필터링을 완료하면 다시 사용합니다. – charlietfl

답변

10

이 내가 기본을 ngtable 구성을 남은

 var usersData = []; // initial data 

     $scope.tableParams = new ngTableParams({ 
      page: 1,   
      count: 7 
     }, { 
     counts : [7,14,21,28],   
     getData: function($defer, params) { 
      var searchedData = searchData(); 
      params.total(searchedData.length); 
      $scope.users = searchedData.slice((params.page() - 1) * params.count(), params.page() * params.count()); 
      $defer.resolve($scope.users);       
     }, 
     $scope: { $data: {} } 
    }); 


$scope.$watch("searchUser", function() { 
    $scope.tableParams.reload(); 
}); 

var searchData = function(){ 
    if($scope.searchUser) 
     return $filter('filter')(usersData,$scope.searchUser); 
    return usersData; 
} 

스크립트

HTML을

<input type="text" ng-model="searchUser"> 

    <table ng-table="tableParams"> 
     <tr ng-repeat="user in $data"> 
     ... 
     </tr> 
    </table> 

했던 방법이다.

+2

'$ this.last! == undefined' 안에 리로드를 래핑하여 첫 번째로드에서 테이블을 다시로드하는 것을 방지 할 수 있습니다. 전체 예제 : $ scope. $ watch ("searchUser", function() { \t \t if (! 이것 좀 봐요 == 정의되지 않은) { \t \t \t $ scope.tableParams.reload(); \t \t} \t});' – Daniel

+0

@Daniel 네 .. 감사합니다 – Viswa

1

원래 질문을 바탕으로 모든 데이터를 처음로드하는 경우 매우 간단합니다. 이 http://ng-table.com/#/filtering/demo-api을 참조 용으로 사용한 다음 ng-change로 미리 입력 된 필터링을 추가했습니다.

보기 :

컨트롤러에서
<form name="awesomeForm" novalidate> 
<div class="input-group"> 
    <input type="text" class="form-control" placeholder="Search term" name="searchTerm" ng-model="globalSearchTerm" ng-change="applyGlobalSearch(globalSearchTerm)" required /> 
    <span class="input-group-btn"> 
     <button class="btn btn-default" type="submit" > 
      <span class="glyphicon glyphicon-search"></span> 
     </button> 
    </span> 
</div> 
</form> 

(당신이 당신의 테이블에 데이터를로드 한 후) :

$scope.applyGlobalSearch = function(term) { 
    $scope.tableParams.filter({ $: term }); 
}