1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[memo] AngularJs ng-if, ng-show, ng-switchのDOMからの追加・削除とCSSでの表示・非表示について

Last updated at Posted at 2016-04-01

開発してて、当たり前の事をたまにふと忘れてしまいそうになるのでメモ。

テスト

   <div>
    <input type="checkbox" name="test" ng-model="testModel">
    <div ng-if="testModel">IfTrue</div>
    <div ng-if="!testModel">IfFalse</div>
    <div ng-show="testModel">showTrue</div>
    <div ng-show="!testModel">showFalse</div>
    <div ng-switch="testModel">
      <div ng-switch-when="true">switchTrue</div>
      <div ng-switch-when="false">switchFalse</div>
      <div ng-switch-default>switchDefault</div>
    </div>
  </div>

よく使うディレクティブを使ってテスト的なコードを使って、どれがDOMから削除され、どれがCSSで見かけ上消えるだけなのかを、簡単なテストコードで確認。

結果

スクリーンショット 2016-04-01 12.10.03.png
  • ng-ifng-switch がDOMから追加と削除
  • ng-showがCSSで制御

ついでに

DOMからの追加・削除とCSSでの表示・非表示の気をつけることもメモ

DOMからの追加・削除

CSSのリストなどで:first-childをする場合、影響を受ける段落が変わってしまい、レイアウトが崩れてしまう。

CSSでの表示・非表示

閲覧者に隠れてる部分が見えてしまう為、条件に応じて見られたらまずいものを扱う場合は危険

最後に

開発後半で全てのコードのng-ifng-ifng-switch ..etc
をチェックするのはかなり手間と、再デバッグが必要になるので気をつけて開発していきたい。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?