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

AngularJS:具有特殊规则的自定义过滤器,angularjs,filter,angularjs-filter,Angularjs,Filter,Angularjs Filter,我试图制作多重过滤器,过滤对象中的三个属性 我已经做了: <div class="" ng-repeat="selectedCard in Cards | filter { status:filterValueStatus, monitorLevel:filterValueType, monitorSystem:filterValue } "> 答案是: <div class="" ng-repeat="selectedCard in Card

我试图制作多重过滤器,过滤对象中的三个属性

我已经做了:

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

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

您可以将过滤器拆分为2个,并使用三值运算。你得到的概念是:

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

答案并不像我想象的那么复杂

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


首先,检查状态是否等于“2”,并且只有后记根据状态过滤卡片

你很可能在一个过滤器中完成。你试过什么?我什么都没试过,我不知道如何分割这个过滤器没有必要分割它我不认为,你可以只做一个过滤器,里面有几个if语句?我从来没有构建过一个伪装过滤器‘你有没有一个例子?也许你可以在第一个过滤器中导入另外两个过滤器,使用依赖注入,并使用$filter('filter')(数组、表达式、比较器):…这是一种在控制器/指令/服务中触发过滤器的方法。。。和其他筛选器。这意味着什么:筛选器:selectedCard.status==2?{}:selectedCard.status==2?{}:{monitorLevel:filterValue类型,monitorSystem:filterValue}。这是一个三元运算。如果status等于2,则结果将被空对象过滤(该对象不进行过滤)。否则它将按monitorLevel和monitor Systems筛选结果此部分不工作:filter:selectedCard.status==“2”?{}:{monitorLevel:filterValue类型,monitorSystem:filterValue}很抱歉。我想我错了。您仍然需要为您的目的创建一个自定义过滤器。我更改了它,现在它可以工作了,假设是这样的:
<div class="" ng-repeat="selectedCard in Cards | filter: filterValueStatus == '2' ? {status:'2'} : {status:'3', monitorLevel:filterValueLevel, monitorSystem:filterValue}">