Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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 如何使用输入数组AngularJS搜索对象_Javascript_Angularjs - Fatal编程技术网

Javascript 如何使用输入数组AngularJS搜索对象

Javascript 如何使用输入数组AngularJS搜索对象,javascript,angularjs,Javascript,Angularjs,我使用AngularJS过滤器来搜索对象,甚至使用深度搜索和$,但是像下面这样的部分搜索永远不会返回我期望的结果,我可以使用.split(“”)将搜索输入拆分为一个数组,尽管我不知道如何正确地将此数组传递给过滤器 我试图定义自己的过滤器,但没有成功 数据: 搜索输入->预期行为 “tes blu”->返回一个结果 “te desc”->返回一个结果 “紫色”->返回零结果 如能就如何进行提供任何建议,将不胜感激 我使用的是AngularJS:v1.3.13 这里的代码:我就是这样解决的: v

我使用AngularJS过滤器来搜索对象,甚至使用深度搜索和$,但是像下面这样的部分搜索永远不会返回我期望的结果,我可以使用.split(“”)将搜索输入拆分为一个数组,尽管我不知道如何正确地将此数组传递给过滤器

我试图定义自己的过滤器,但没有成功

数据:

  • 搜索输入->预期行为
  • “tes blu”->返回一个结果
  • “te desc”->返回一个结果
  • “紫色”->返回零结果
如能就如何进行提供任何建议,将不胜感激

我使用的是AngularJS:v1.3.13

这里的代码:

我就是这样解决的:

var-App=angular.module(“App”,[]);
App.controller(“testCtrl”,函数($rootScope,$scope){
$scope.testObjects=[
{ 
描述:“测试描述”,
颜色:“蓝色”,
尺寸:“大”
}, { 
描述:“aest 2”,
颜色:“橙色”,
尺寸:“大”
}
, { 
描述:“测试3”,
颜色:“黑色”,
尺寸:“小”
}
];
$scope.Search=“”;
$rootScope.ScoreThings=函数(对象,输入阵列){
var结果=0;
对于(变量x=0;x-1)
{
结果++;
} 
});     
}
返回结果;
}
});
App.filter('SearchFilter2',函数($rootScope){
返回函数(项、输入字符串){
var筛选=[];
var inputArray=inputString.split(“”);
对于(变量i=0;i(inputArray.length/1.2))
{
过滤。推送(项目[i]);
}
}
返回过滤;
};
});
在您的视图中使用它,如:

     <tr ng-repeat="testObject in testObjects | SearchFilter2 : Search ">

var App = angular.module("App",[]);
  App.controller("testCtrl",function($rootScope,$scope){

    $scope.testObjects = [
      { 
        Description: "test Description",
        Color: "Blue",
        Size: "Large"
      }, { 
        Description: "aest 2",
        Color: "orange",
        Size: "Large"
      }
      , { 
        Description: "test 3",
        Color: "black",
        Size: "small"
      }
      ];

     $scope.Search = "";


    $rootScope.ScoreThings =  function(object , inputArray){

          var result = 0;

          for (var x = 0; x < inputArray.length; x++)
          {
                    angular.forEach(object, function(value, key) {
                      if (value.toLowerCase().indexOf(inputArray[x].toLowerCase()) > -1)
                      {
                        result ++;
                      } 

                    });     

           }

          return result;
      }


  });


App.filter('SearchFilter2', function ($rootScope) {

  return function (items, inputString) {

    var filtered = [];
    var inputArray = inputString.split(" ");
    for (var i = 0; i < items.length; i++) 
    {
      if ($rootScope.ScoreThings(items[i], inputArray) > (inputArray.length / 1.2) ) 
      {
          filtered.push(items[i]);
      }
    }

    return filtered;
  };
});
     <tr ng-repeat="testObject in testObjects | SearchFilter2 : Search ">