web-dev-qa-db-ja.com

ng-hide / ng-showで複雑な表現は可能ですか?

私はそうしたいのです。

ng-hide="!globals.isAdmin && mapping.is_default"

しかし、式は常にfalseに評価されます。

私は$scopeに特別な関数を定義したくありません。

174
Paul

任意のJavaScriptコードを実行する必要がある場合、またはtrueまたはfalseを返すフィルタを定義できる場合は、コントローラメソッドを使用してください。

私はテストしたばかりで(最初にそれを実行したはずです)、ng-show="!a && b"のようなものは期待通りに動作しました。

209
Mark Rajcok

ng-show/ng-hideboolean値のみを受け入れます。

複雑な表現の場合は、複雑さを避けるためにコントローラとスコープを使用することをお勧めします。

以下のものでうまくいくでしょう(それほど複雑な表現ではありません)

ng-show="User=='admin' || User=='teacher'"

この要素は、2つの条件のいずれかがtrue(OR演算)を返したときにUIに表示されます。

このようにあなたはどんな式でも使うことができます。

118
myaseedk

表現が多すぎない場合はこれでうまくいきます。

例:ng-show="form.type === 'Limited Company' || form.type === 'Limited Partnership'"

これより表現が多い場合はコントローラを使用してください。

12
lvadim01

通常、ng-showとng-hideは、条件式ではなくブール値として設計されているため、式の使用は避けます。条件付きロジックとブールロジックの両方が必要な場合は、最初のチェックとしてng-ifを使用して条件付きロジックを入力し、次にng-showとng-hideを使用してブールロジック用の追加のチェックを追加します。

ただし、ng-showまたはng-hideに条件を使用する場合は、次のようにいくつかの例があります。 ng-if、ng-show、ng-hideを使用した条件付き表示、 ng-include、ng-switch

6
James Drinkard

上記の答えのいくつかは私にはうまくいきませんでしたが、これはうまくいきました。念のために、他の誰かが同じ問題を抱えている。

ng-show="column != 'vendorid' && column !='billingMonth'"
2
Deathstalker