如何在使用OR作为条件过滤多个列时使用$ filter('filter')?
问题描述:
我在AngularJs应用程序中有一组客户。
var customers = [
{
"Name": "Alfreds Futterkiste",
"City": "Berlin",
"Country": "Germany"
},
{
"Name": "Ana Trujillo Emparedados y helados",
"City": "México D.F.",
"Country": "Mexico"
}
];
我的问题是如何使用多列过滤。我尝试了下面的代码,它不起作用。
编辑
如何上面的语法转换为'或'请检查Sample为参考。
答
既然你没有使用自定义的角度滤波器通常我只是用Array.prototype.filter()
虽然你也可以使用一个函数的参数与$filter
以下假定部分匹配
$scope.customers = customers.filter(item){
var term = $scope.criteria.searchtext.toLowerCase();
//partial match
return item.Name.toLowerCase().indexOf(term) >-1
|| item.City.toLowerCase().indexOf(term) >-1;
});
这可以迅速变成一个角度自定义过滤器也用于视图
答
我创建了一个新的自定义过滤器过滤多列使用OR
条件进行检查,
var myApp = angular.module('myApp',[]);
function MyCtrl($scope,myFilterFilter) {
\t $scope.criteria = {};
$scope.criteria.searchtext = 'Berlin';
\t \t var customers =[{"Name":"Alfreds Futterkiste","City":"Berlin","Country":"Germany"},
{"Name":"Ana Trujillo Emparedados y helados","City":"México D.F.","Country":"Mexico"},{"Name":"Futterkiste","City":"Berlin","Country":"Germany asfdasdas"}]
$scope.customers=myFilterFilter(customers,$scope.criteria.searchtext,$scope.criteria.searchtext);
}
angular.module('myApp').filter('myFilter', function() {
return function(customers,name,city) {
var yes = [];
angular.forEach(customers, function(value, key) {
if ((value['Name'] === name) || (value['City'] === city)) {
yes.push(value);
}
});
console.log(yes)
return yes
}
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular.min.js"></script>
<div ng-controller="MyCtrl" ng-app="myApp">
Hello, {{customers}}!
</div>
答
添加过滤器在客户
<tr class="animate" ng-repeat="customer in customers | filter: criteria.searchtext">
<td ng-bind="customer.Name"></td>
<td ng-bind="customer.City"></td>
<td ng-bind="customer.Country"></td>
</tr>
再往前客户到$scope
如下
$scope.customers = [{}]; // Will be array of customers
入住这Solution
让我们知道这对你的作品或没有。
+0
看看我如何添加一个'filter:criteria.searchtext'这是你将通过搜索,它会过滤你的记录。试试看,让我们知道。我已经自己测试过并且工作过。 – Samundra
取决于您的搜索条件。 *“不起作用”*不是很有用的信息 – charlietfl
你确定它不工作吗?我已经测试过,它的工作原理。请注意,该语法使用“和”进行过滤,这意味着条件可能类似于“将名称包含此文本的对象和包含相同文本的城市”。是“OR”你需要什么? –
@AlvaroVazquez是啊“或”是我需要对不起,如果我迷茫你们 –