我正在寻找一种方法基本上告诉角跳过一个项目在一个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):
但还有其他方法,其中一个是使用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.
这通常不会影响正常的行为,但为了防止意外情况,你应该在实现之前记住这一点。