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