Angular JS过滤器不等于

ame*_*lon 81 javascript angularjs angularjs-ng-repeat ng-filter

看起来像一个非常基本的问题,但我无法正确的语法..

<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>
Run Code Online (Sandbox Code Playgroud)

我想要的只是显示id为非-1的所有问题.我究竟做错了什么.谢谢!

Mic*_*ose 161

语法稍微偏离,尝试:

<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>
Run Code Online (Sandbox Code Playgroud)

看一点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>
Run Code Online (Sandbox Code Playgroud)

  • 这也将过滤掉任何包含`-1`作为子串的`Id`,例如`-11`或`2-1`.为了可靠地检查"Id"不是"-1",你应该编写一个小的比较器函数并将其用作过滤器. (10认同)

Fer*_*osa 20

尽管@Michael Rose的回答适用于这种情况,但如果您尝试过滤不等于某个对象/变量,我认为不会

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

JS:

filterId = -1
Run Code Online (Sandbox Code Playgroud)

HTML:

<li ng-repeat="question in newSection.Questions | filter: !{ Id: filterId}">
</li>
Run Code Online (Sandbox Code Playgroud)

一个更嵌套的案例:

JS:

someQuestion = {
   someObject: {
     Id: 1
   }
}
newSection.Questions = [someQuestion]
Run Code Online (Sandbox Code Playgroud)

HTML

<li ng-repeat="question in newSection.Questions | filter: !{someObject : {Id: -1} }">
</li>
Run Code Online (Sandbox Code Playgroud)