AngularJS转发器,它为复杂模型提供多个内联过滤

时间:2014-03-20 10:23:24

标签: javascript angularjs

我是AngularJS的新手,所以想了解如何做到这一点。

而不是创建几个粗块'过滤器代码,是否可以在转发器中巧妙地拥有多个显示/隐藏过滤器?与AngularJS网站中的自定义过滤器/教程9相比,这将极大地简化了乍一看的可读性,而且代码更少。

类似的东西:

    <li ng-repeat="phone in phones | filter:(showIf phone.brand == 'Nexus') | orderBy:orderProp">
       {{phone.name}}
       <ul>
          <li ng-repeat="price in phone.prices | filter:(showIf price < 100)">${{price}}</li>
       </ul>
    </li>

编辑:

这是否有用?如果没有UL,我该如何隐藏父LI

<li ng-repeat="phone in phones | filter:{brand: 'Nexus'} | orderBy:orderProp">
   {{phone.name}}
   <ul>
      <li ng-repeat="price in phone.prices | filter:{price: < 100}">${{price}}</li>
   </ul>
</li>

1 个答案:

答案 0 :(得分:0)

请参阅Angular文档中的Filter dev guide。这完全有可能。

您的第一个示例showIf phone.brand == 'Nexus'最好使用内置过滤器,有点混淆地命名为filter

<li ng-repeat="phone in phones | filter:{brand: 'Nexus'}">{{ phone }}</li>

由于<运算符,您的第二个示例有点复杂,但可以通过使用相同的filter过滤器和自定义比较器函数,或者通过创建自己的自定义过滤器来解决。 / p>

比较器功能示例:

$scope.lessThan = function(expected, actual) {
    return actual < expected;
}

用过:

<li ng-repeat="price in phone.prices | filter:{price: 100}:lessThan">{{price}}</li>