AngularJSフィルターが等しくない


83

非常に基本的な質問のようですが、構文を正しく理解できません。

<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が質問の属性であるということだと思います
SoluableNonagon 2014年

@EliteOctagonあなたはそれを行うことができます-以下の私の答えを参照してください。
Michael Rose

ドキュメントを見ましたか?docs.angularjs.org/api/ng/filter/filterexpression説明されている部分(使用法->引数の2番目のp ) filter: {Id: "!-1"}またはそのような
何か

回答:


165

構文が少しずれています。試してみてください。

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

これはどういうわけか変数に対しても機能しますか?このフィドルのわずかな変更により、「等しくない」量が定数ではなく変数に配置され、機能しなくなります。
ドミ2014年

さて、あなたはおそらく作家に独自のフィルター機能を必要とする、のは、それを呼び出してみましょうcheckForX、その後のようにそれを使用し... | filter:checkForX、一致がある場合にtrueまたはfalseを返す...
マイケル・ローズ

@ドミ、私はあなたの質問に答えるより一般的な答えを投稿しました。時間があるときにチェックしてください
Fernando Carvalhosa

1
@Tielman、追加の変数を宣言する必要はありません。これはうまく機能します: "filter:{id: '!' + notValid} "
Stalinko 2015年

11
これにより、またはなどの部分文字列としてId含ま-1れるものもすべて除外されます。そうでないことを確実にチェックするには、小さなコンパレータ関数を記述し、それをフィルタとして使用する必要があります。-112-1Id-1
andypea 2015年

20

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

1
この構文は私には機能しません:!{Id:-1}ですが、別の答えはうまく機能します:{Id: '!-1'}。おそらくそれはバージョンの違いでしたか?
python1981 2017年

になり得る。どのバージョンを使用していますか?
フェルナンド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.