我使用AngularJS过滤器搜索对象,甚至使用$的深度搜索,但是下面的部分搜索永远不会返回我期望的结果,我可以使用.split将搜索输入拆分为数组( “”)虽然我不知道如何正确地将此数组传递给过滤器。
我试图定义自己的过滤器但没有成功。
数据:
[
{
Description: "test Description",
Color: "Blue",
Size: "Large"
}, {
Description: "aest 2",
Color: "orange",
Size: "Large"
}
, {
Description: "test 3",
Color: "black",
Size: "small"
}
]
非常感谢任何关于如何进行的建议。
我使用的是AngularJS:v1.3.13
答案 0 :(得分:0)
这就是我解决它的方式:http://plnkr.co/edit/W66NxRlh8deRUh6Uxpor?p=preview
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 ">