web-dev-qa-db-ja.com

Angular 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でないすべての質問を表示することです。私は何を間違えていますか。ありがとう!

79
americanslon

構文は少しずれています。試してください:

<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>
159
Michael Rose

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