2015-10-16 2 views
0

Я пытаюсь сделать фильтр поиска поля с использованием углового фильтра для конкретных полей и которые должны быть OR условиеangularjs фильтр несколько полей с или условие

Это демонстрационная реализация http://jsfiddle.net/tomalex0/ck19wvdx/2/. Я пытаюсь найти только по Name и Gender, но не Location.

Любая комбинация, которую я попробовал, больше похожа на AND состояние. Есть ли встроенный способ сделать OR condition в filter?

<div ng-app="myApp" ng-controller="myController"> 
<input type="text" ng-model="search"> 
<ul> 
    <li ng-repeat="user in users | filter: search">{{user.Name}} | {{user.Location}} 
    </li> 
</ul> 
</div> 





var data = [ 
     { 
      Name: "John Smith", 
      Gender: "M", 
      Location: "Wales" 
     }, 
     { 
      Name: "Sally Smith", 
      Gender: "F", 
      Location: "USA" 
     }, 
     { 
      Name: "Curtis Timson", 
      Gender: "M", 
      Location: "England" 
     }, 
     { 
      Name: "Sam Wallace", 
      Gender: "M", 
      Location: "England" 
     }, 
     { 
      Name: "Caroline James", 
      Gender: "F", 
      Location: "Scotland" 
     } 
    ]; 

    var myApp = angular.module("myApp", []); 

    myApp.controller("myController", function($scope){ 
     $scope.users = data; 
    }); 

ответ

0

Ваша демонстрация работает как оператор OR для меня.

Например, если я пишу sa на входе, результат:

Sally Smith | USA 
Sam Wallace | England 

С AND, Sam Wallace | England будут скрыты, потому что England не содержит sa.

+0

Я хочу, чтобы исключить поиск поля Расположение – tomalex

1

Возможно, вам придется использовать функцию фильтра вместо прямой передачи строки поиска в фильтр. Соответствующий код приведен ниже. Here is ur fiddle modified.

<li ng-repeat="user in users | filter: filter"> 

$scope.filter = function(item) { 
var regex = new RegExp($scope.search, 'gi'); 
return item.Name.match(regex) || item.Gender.match(regex); 
}; 
+0

Ниццей и легко. Спасибо. –