Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单输入多条件角滤波器_Javascript_Angularjs - Fatal编程技术网

Javascript 单输入多条件角滤波器

Javascript 单输入多条件角滤波器,javascript,angularjs,Javascript,Angularjs,拉小提琴: 我所期望的是: 搜索:'house paris'->此行作为结果:Sell house in paris 我真的不知道怎么做:把单词分开,让它们成为我的过滤器的“或条件” 有什么想法吗?您可以自己定制过滤器。下面是一个与您提供的示例集成的简单实现示例 过滤器 app.filter('contains', ['$filter', function(filter) { return function (collection, query) { var arr =

拉小提琴:

我所期望的是: 搜索:'house paris'->此行作为结果:
Sell house in paris

我真的不知道怎么做:把单词分开,让它们成为我的过滤器的“或条件”


有什么想法吗?

您可以自己定制过滤器。下面是一个与您提供的示例集成的简单实现示例

过滤器

app.filter('contains', ['$filter', function(filter) {
    return function (collection, query) {
        var arr = query ? query.toLowerCase().split(/\s+/) : [];
        for (var i = 0; i < arr.length; i += 1) {
            collection = filter('filter')(collection, arr[i]);
        }
        return collection;
    }
}]);
app.filter('contains',['$filter',函数(filter){
返回函数(收集、查询){
var arr=query?query.toLowerCase().split(/\s+/):[];
对于(变量i=0;i

您可以观察搜索更改,如果有新值,只需将其拆分为单词,并用这些单词过滤原始数组即可

 <div ng-app="app">
  <div ng-controller="AppCtrl">
    <p>Name: <input type="text" ng-model="search"></p>
    <ul>
      <li ng-repeat="x in articles">
      {{ x }}
      </li>
    </ul>
  </div>
</div>

看看这个答案。它本质上涉及到使您自己的过滤器成为完美的解决方案。非常感谢。
(function(angular){
     angular.module('app',[])
     .controller('AppCtrl', function($scope, $filter){
         $scope.articlesOriginal = ['Sell house in Washigton', 'Sell house in Paris', 'Sell car in London', 'Sell car in Washigton'];
         $scope.articles = $scope.articlesOriginal;

       $scope.$watch('search', function(newVal, oldVal){
        if(newVal!==oldVal){
          var filteredList, splitedWords, resultList=$scope.articlesOriginal;

          splitedWords = newVal.trim().split(/\s+/);

          angular.forEach(splitedWords, function(word){
            resultList = $filter('filter')(resultList, word);
          });

          $scope.articles = resultList;

        }
    });
    });
 })(angular);