angularjs – angular ng-repeat跳过一个项目,如果它匹配表达式

前端之家收集整理的这篇文章主要介绍了angularjs – angular ng-repeat跳过一个项目,如果它匹配表达式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在寻找一种方法基本上告诉角跳过一个项目在一个ng-repeat如果它匹配一个表达式,基本上继续;

在控制器:

$scope.players = [{
    name_key:'FirstPerson',first_name:'First',last_name:'Person'
},{
    name_key:'SecondPerson',first_name:'Second',last_name:'Person'
}]

现在在我的模板中,我想显示不匹配name_key =’FirstPerson’的每个人。我想它必须是过滤器,所以我设置一个Plunkr玩它,但没有运气。 Plunkr Attempt

正如 @Maxim Shoustin建议,实现你想要的最好的方法是使用自定义过滤器。
但还有其他方法,其中一个是使用ng-if指令在同一个元素上,你把ng-repeat指令(也就是这里的 plunker):
<ul>
    <li ng-repeat="player in players" ng-if="person.name_key!='FirstPerson'"></li>
</ul>

这可能存在一个从审美角度的小缺点,但有一个主要的优势,你的过滤可以基于一个规则,不那么紧耦合到players数组,并可以轻松地访问其他数据在您的应用程序的范围:

<li 
      ng-repeat="player in players" 
      ng-if="app.loggedIn && player.name != user.name"
  ></li>

更新
如上所述,这是这种问题的解决方案之一,可能或不可能满足您的需要。
正如注释中指出的,ng-if是一个指令,这实际上意味着它可能在后台做比你想象的更多的事情。
例如,ng-if creates a new scope from it’s parent

The scope created within ngIf inherits from its parent scope using prototypal inheritance.

这通常不会影响正常的行为,但为了防止意外情况,你应该在实现之前记住这一点。

猜你在找的Angularjs相关文章