AngularJS:具有特殊规则的自定义过滤器

时间:2015-12-07 17:18:35

标签: angularjs filter angularjs-filter

我正在尝试制作多重过滤器,过滤对象中的三个属性。

我已经做过的事情:

<div class="" ng-repeat="selectedCard in Cards | filter {
    status:filterValueStatus,
    monitorLevel:filterValueType,
    monitorSystem:filterValue
} ">  

问题是我需要在状态等于'2'时显示对象,而不是继续使用两个过滤的属性:monitorLevel和monitorSystem。 (它不起作用)。 此外,如果status等于'3',我需要显示对象,然后通过两个属性monitorLevel和monitorSystem对其进行过滤。

总之,它需要检查状态,然后才能决定是否制作另外两个过滤器。

我到目前为止构建的过滤器:

app.filter('cardFilter', ['$filter', function($filter) {
    return function(status, monitorLevel,monitorSystem) {
        if (status == '2') {
            return $filter('filter')(status);
        } else {
        return $filter('filter')(status,monitorLevel,monitorSystem);
        }
    };
}]);

答案:

  <div class="" ng-repeat="selectedCard in Cards | filter: filterValueStatus == '2' ? {status:'2'} : {status:'3', monitorLevel:filterValueLevel, monitorSystem:filterValue}">

2 个答案:

答案 0 :(得分:0)

您可以将过滤器拆分为2并使用三元操作。你得到了这个概念:

<div ng-repeat="selectedCard in Cards | filter : { status:filterValueStatus} |
   filter : selectedCard.status === 2 ? {} : {
        monitorLevel:filterValueType,
        monitorSystem:filterValue
   } 
} "> 

答案 1 :(得分:0)

答案并不像我认为的那样复杂。

{{for people}}
    <li>{{:#data['full.name']}} likes to wear {{:shirtColor}} shirts</li>
{{/for}} 

首先,根据状态检查状态是否等于'2',并且只检查过滤后的卡片。