在条件下应用Angular ng-repeat过滤器

时间:2015-11-12 06:59:49

标签: angularjs

我是角色新手,我想知道如何在ng-repeat指令中应用和删除过滤器,但我想在某些条件下删除或添加过滤器,例如使用$ stateParams更改网址

if($stateParams.x){
  //remove unique filter
}
else{
   //add unique filter
}

下面是我正在处理的代码

<div ng-app="app" ng-controller="MyCtrl as item">
<div >
<ul>
  <li ng-repeat="item in items | unique: 'column'" myfilter>
    {{ item.column }}
     </li>
   </ul>
</div>
</div>

这是一个我正在尝试这样做的plunker链接,但它无法正常工作。 http://plnkr.co/edit/zwy7slwOPfvLqJPVV1sk?p=preview

2 个答案:

答案 0 :(得分:0)

如果您不想编写自己的过滤器,可以使用外部ng - 如果是这样的话:

<div ng-app="app" ng-controller="MyCtrl as item">
<div>
  <ul ng-if="$stateParams.x">
    <li ng-repeat="item in items | unique: 'column'" myfilter>
      {{ item.column }}
    </li>
  </ul>
  <ul ng-if="!$stateParams.x>
    <li ng-repeat="item in items">
      {{ item.column }}
    </li>
  </ul>
</div>
</div>

答案 1 :(得分:0)

如果您使用一些标志传入额外的过滤器中的其他参数,以启用和禁用唯一过滤器,则可以执行此操作。换句话说,如果flag为true,那么你将使用唯一的逻辑,否则你将返回所有项目。它已被回答here以及一个样本