我有这个
<li ng-repeat="phone in (filteredNumber = (phones | filter : 'jason Raq'))">
这很好用并告诉我json Raq的名字作为过滤结果,但现在我需要两个名字。杰森和马克
我试过这个让它工作但没有成功
<li ng-repeat="phone in (filteredNumber = (phones | filter : {'jason Raq':'Mark'}))">
我也试过
<li ng-repeat="phone in (filteredNumber = (phones | filter : 'jason Raq' | filter :'Mark'))">
但没有运气......我们如何做多个过滤器?
答案 0 :(得分:2)
您可以使用控制器功能来获取filteredNumber
这样的
<li ng-repeat="phone in phones | filter : filterByName">
<span ng-bind="phone.name"></span>
</li>
并在您的控制器中
$scope.filterByName= function(phone){
return (phone.name === 'jason Raq') || (phone.name === 'Mark');
}
答案 1 :(得分:1)
尝试将名称放在数组上,然后根据该数组过滤phones
:
<li ng-repeat="phone in (filteredNumber = (phones | filter : ['jason Raq','Mark'])">
答案 2 :(得分:1)
试试这个:
<li ng-repeat="phone in (filteredNumber = (phones | filter : 'jason Raq').concat((phones | filter : 'Mark')))">
这有效,但似乎你误解了角度滤波器的概念。
过滤器值用于匹配满足该值的元素。
在您的代码中,您希望指定多个值并使用 OR 条件来匹配满足其中一个值的任何元素。
如果您需要执行此类操作,则必须编写自定义过滤器。像这样:
app.filter('customFilter', function() {
return function(input, filterValues) {
var out = [];
for (var i = 0; i < input.length; i++) {
if (filterValues.indexOf(input[i]) >= 0){
out.push(input[i]);
}
}
return out;
}
});
使用它:
<li ng-repeat="phone in (filteredNumber = (phones | customFilter : ['jason Raq','Mark']))">
或者:
<li ng-repeat="phone in phones | customFilter : ['jason Raq','Mark']">