ng-if
とng-show
/の違いを理解しようとしてng-hide
いますが、同じように見えます。
どちらを使用するかを選択する際に留意すべき違いはありますか?
ng-if
とng-show
/の違いを理解しようとしてng-hide
いますが、同じように見えます。
どちらを使用するかを選択する際に留意すべき違いはありますか?
ng-if
ディレクティブはページからコンテンツを削除しng-show/ng-hide
、CSSdisplay
プロパティを使用してコンテンツを非表示にします。
:first-child
これは、スタイルに:last-child
疑似セレクターを使用する場合に便利です。
@Gajus Kuizinas と @CodeHater は正しいです。ここでは、例を挙げているだけです。ng-if を使用しているときに、割り当てられた値が false の場合、html 要素全体が DOM から削除されます。割り当てられた値が true の場合、html 要素は DOM で表示されます。また、スコープは親スコープとは異なります。ただし、ng-show の場合は、割り当てられた値に基づいて要素を表示および非表示にするだけです。しかし、それは常に DOM にとどまります。割り当てられた値に従って可視性のみが変化します。
http://plnkr.co/edit/3G0V9ivUzzc8kpLb1OQn?p=preview
この例がスコープを理解するのに役立つことを願っています。ng-show と ng-if に false の値を与えてみて、コンソールで DOM を確認してください。入力ボックスに値を入力してみて、違いを観察してください。
<!DOCTYPE html>
<input type="text" ng-model="data">
<div ng-show="true">
<br/>ng-show=true :: <br/><input type="text" ng-model="data">
</div>
<div ng-if="true">
<br/>ng-if=true :: <br/><input type="text" ng-model="data">
</div>
{{data}}
注意するために、今私に起こったこと: ng-show は css を介してコンテンツを非表示にしますが、ボタンであるはずの div で奇妙な不具合が発生しました。
下部に 2 つのボタンがあるカードがあり、実際の状態に応じて 1 つが 3 番目の例と交換され、新しいエントリを含む編集ボタンが表示されます。ng-show=false を使用して左側のボタン (ファイルの最初に存在) を非表示にすると、次のボタンがカードの外側の右側の境界線で終了することがありました。ng-if は、コードをまったく含めないことでそれを修正します。(ng-show の代わりに ng-if を使用していくつかの隠された驚きがあるかどうかをここで確認しました)