【问题标题】:Angular JS filter not equalsAngular JS过滤器不等于
【发布时间】:2014-05-05 04:07:54
【问题描述】:

似乎是一个非常基本的问题,但我无法正确理解语法..

<li class="list-group-item" ng-repeat="question in newSection.Questions | filter:Id != '-1'; " ng-mouseenter="hover = true" ng-mouseleave="hover = false">
    <div href="#" editable-text="question.Text">{{question.Text}}</div>
</li>

我只想显示所有 id 不是 -1 的问题。 我究竟做错了什么。谢谢!

【问题讨论】:

  • 您需要编写一个自定义过滤器来检查 question.id != -1。另外我认为你的错误是 id 是问题的属性
  • @EliteOctagon 你可以做到 - 请参阅下面的答案。
  • 你看文档了吗? docs.angularjs.org/api/ng/filter/filter 在解释 expression 的部分(第二个 p 在 Usage -> argumentsfilter: {Id: "!-1"} 或类似的东西应该做的伎俩

标签: javascript angularjs angularjs-ng-repeat ng-filter


【解决方案1】:

虽然@Michael Rose 的回答适用于这种情况,但如果您尝试过滤不等于某些对象/变量,我认为它不会起作用

在这种情况下,您可以使用:

JS

filterId = -1

HTML:

<li ng-repeat="question in newSection.Questions | filter: !{ Id: filterId}">
</li>

一个更嵌套的案例:

JS

someQuestion = {
   someObject: {
     Id: 1
   }
}
newSection.Questions = [someQuestion]

HTML

<li ng-repeat="question in newSection.Questions | filter: !{someObject : {Id: -1} }">
</li>

【讨论】:

  • 这种语法对我不起作用:!{ Id: -1} 但替代答案效果很好:{ Id:'!-1'}。也许这是/曾经是版本差异?
  • 可能是。你用的是什么版本?
【解决方案2】:

语法有点不对,试试:

<li class="list-group-item"
    ng-repeat="question in newSection.Questions | filter:{ Id: '!-1'}"
    ng-mouseenter="hover = true" ng-mouseleave="hover = false">

    <div href="#" editable-text="question.Text">{{question.Text}}</div>
</li>

看一点 JSFiddle:http://jsfiddle.net/U3pVM/3845/

编辑:

变量示例:

<script> var invalidId = '-1'; </script>
<li class="list-group-item"
    ng-repeat="question in newSection.Questions | filter:{ Id: '!' + invalidId}"
    ng-mouseenter="hover = true" ng-mouseleave="hover = false">

    <div href="#" editable-text="question.Text">{{question.Text}}</div>
</li>

【讨论】:

  • 这是否也适用于变量? This slight modification of your fiddle 将“不相等”的数量放在变量中,而不是常量中,它不再起作用了。
  • 好吧,您可能需要编写自己的过滤器函数,我们称之为checkForX,然后像... | filter:checkForX 一样使用它,如果匹配则返回true 或false...
  • @Domi,我发布了一个更一般的答案来回答您的问题。有空的时候看看
  • @Tielman,不需要声明额外的变量。这很好用:“过滤器:{id:'!' + 无效}"
  • 这还将过滤掉任何包含-1 作为子字符串的Id,例如-112-1。要可靠地检查Id 不是-1,您应该编写一个小的比较器函数并将其用作过滤器。
猜你喜欢
  • 2015-01-12
  • 2016-05-06
  • 1970-01-01
  • 2017-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多