当前位置: 首页 > 面试题库 >

angular ng-repeat如果匹配表达式则跳过项目

松英叡
2023-03-14
问题内容

我正在寻找一种基本上告诉angular如果与表达式匹配的话跳过ng-repeat中的项目的方法continue

在控制器中:

$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尝试


问题答案:

正如@Maxim Shoustin所)建议的,实现所需目标的最佳方法是使用自定义过滤器。
但是还有其他方法,其中一种方法ng-if是在放置指令的情况下在同一元素上使用ng- repeat指令(也是,这是plunker):

<ul>
    <li ng-repeat="player in players" ng-if="player.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 从其父级创建一个新范围:

ngIf中创建的范围使用原型继承从其父范围继承

这通常不会影响正常行为,但是为了防止意外情况,在实施之前应牢记这一点。



 类似资料:
  • 问题内容: 如果要花费10秒钟以上的时间才能取消操作? 我正在使用巨大的正则表达式来匹配特定的文本,有时可能有用,有时可能会失败… 正则表达式: 工作示例:https://regex101.com/r/kU6rS5/1 所以..如果要花费10秒以上,我想取消操作。可能吗?我找不到与沙发有关的任何东西 谢谢。 问题答案: 您可以生成一个进行正则表达式匹配的子进程,并在10秒钟内未完成将其杀死。可能有

  • 我们得到了一些这样的内容:

  • 主要内容:基本模式匹配,字符簇,确定重复出现基本模式匹配 一切从最基本的开始。模式,是正则表达式最基本的元素,它们是一组描述字符串特征的字符。模式可以很简单,由普通的字符串组成,也可以非常复杂,往往用特殊的字符表示一个范围内的字符、重复出现,或表示上下文。例如: 这个模式包含一个特殊的字符 ^,表示该模式只匹配那些以 once 开头的字符串。例如该模式与字符串 "once upon a time" 匹配,与 "There once was

  • 问题内容: 设置修饰符后,为什么Java子匹配项停止工作? 上面的方法很好,is 和is 。 上面的内容忽略了我的捕获组。以下是唯一有效的解决方案吗? 编辑: 我再次高兴地告诉您,十年后您现在可以执行此操作(.matchAll已添加到规范中) 问题答案: 我很惊讶地发现我是第一个回答我十年前一直在寻找答案的人(答案尚不存在)。我还希望实际的规范作者会在我之前回答它;)。 .matchAll 已被添

  • 有没有人试图描述与正则表达式匹配的正则表达式? 由于重复的关键字,这个主题几乎不可能在网上找到。 它可能在实际应用程序中不可用,因为支持正则表达式的语言通常具有解析它们的方法,我们可以将其用于验证,以及一种在代码中分隔正则表达式的方法,可用于搜索目的。 但是我仍然想知道匹配所有正则表达式的正则表达式是什么样子的。应该可以写一个。

  • 问题内容: 当字符串以数字开头时,我需要匹配,然后是一个点,然后是一个空格和1个或多个大写字符。匹配必须发生在字符串的开头。我有以下字符串。 我尝试过的正则表达式是: 它不匹配。一个有效的正则表达式将对这个问题有什么作用? 问题答案: (对不起,我先前的错误。大脑现在坚定地投入了。嗯,也许。) 这有效: 分解: =字符串开头 =一个或多个数字 (之所以转义,是因为它在字符串中,因此) =文字(或者