2014-10-28 3 views
1

Как я могу применить фильтр поиска более чем в одном поле, используя только одно текстовое поле. Мой JSON содержит имя и IP и некоторые другие поля. Если я использую фильтр. $ I могу получить фильтр во всех полях. И если я использую filter.Name, я могу фильтровать только один. но я хочу отфильтровать по два (имя и IP). Как назначить результат функции filterData в функции getData?Угловой фильтр поиска по нескольким полям

мой код выглядит следующим образом.

это будет очень полезно, если кто-то oculd обновить пример на embed.plnkr.co/llb5k6/preview

<input class="form-control main-search" type="text" ng-model="filter.Name" placeholder="enter text to search" /><table ng-table="tableParams" class="table tile"> 
      <tr ng-repeat="node in $data"> 

       <td data-title="'Name'" sortable="'Name'"> 
        {{node.Name}} 
       </td> 
       <td data-title="'IP'" sortable="'IP'"> 
        {{node.IP }} 
       </td> 
      </tr> 
     </table> 

Мои Js выглядит

$http.get('/api/nodesapi').success(function (nodes) { 
    $scope.data = nodes; 
    $scope.$watch("filter.Name", function() { 
     $scope.tableParams.reload(); 
    }); 
    $scope.tableParams = new ngTableParams({ 
     page: 1,   // show first page 
     count: 10,   // count per page 
     sorting: { 
      name: 'asc' 
     } 
    }, { 

     getData: function ($defer, params) { 
      debugger; 
      var filteredData = $filter('filter')($scope.data, $scope.filter); 

      var orderedData = params.sorting() ? 
           $filter('orderBy')(filteredData, params.orderBy()) : 
           filteredData; 

      $defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count())); 
     }, 
     $scope: $scope 
    }); 
}).error(function() { 
    $scope.error = "An Error has occured while loading nodes!";}); 

ответ

0

Вы можете сделать это:

<input ng-model="query"> 

затем

<tr ng-repeat="node in $data | filter:filterData "> 

и в вашем JS

$scope.filterData = function (item){ 
    if (item.name.indexOf($scope.query)!=-1 || item.IP.indexOf($scope.query)!=-1) { 
    return true; 
    } 
    return false; 
}; 
+0

но искать все поля. Мне нужно искать только два из них, используя одно текстовое поле. что-то вроде embed.plnkr.co/llb5k6/preview, но только для двух полей. –

+0

взгляните на мое редактирование –

Смежные вопросы