角 JS 滤波器不等于

这似乎是一个很基本的问题,但我不能得到正确的语法. 。

<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。 我哪里做错了,谢谢!

98477 次浏览

The syntax is just a little off, try:

<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>

See a little JSFiddle: http://jsfiddle.net/U3pVM/3845/

Edit:

Example with variables:

<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>

Although @Michael Rose answer works for this case, i don't think it will if you try to filter not equal some object/variable

In that case you could use:

JS:

filterId = -1

HTML:

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

An even more nested case:

JS:

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

HTML

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