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