AngularJS のビルトインディレクティブのうち DOM 操作に関するものを、コード例とともに列挙します。公式ドキュメントはこちらです。
<!DOCTYPE html>
<html lang="ja" ng-app>
<head>
<meta charset="utf-8">
<script type="text/javascript" src="angular.min.js"></script>
</head>
<body>
ここにサンプルコードを記述
</body>
</html>
モデル (ng-model) をビューにバインドします。フォームに値を入力すると p タグに即時反映されます。
<input type="text" ng-model="myName">
<p ng-bind="myName"></p>
HTML 要素をビューにバインドします。エラーなく表示するためには ngSanitize を読み込んで XSS 対策をする必要があります。その際
<html lang="ja" ng-app>
↓
<html lang="ja" ng-app="myApp">
のように ng-app にモジュール名を指定する必要があることに注意します。
<!DOCTYPE html>
<html lang="ja" ng-app="myApp">
<head>
<meta charset="utf-8">
<script type="text/javascript" src="angular.min.js"></script>
<script type="text/javascript" src="angular-sanitize.min.js"></script>
</head>
<body>
<input type="text" ng-model="myName">
<p ng-bind-html="myName"></p>
<script>
angular.module('myApp', ['ngSanitize']);
</script>
</body>
</html>
angular-sanitize.min.js
はこちらから辿ってダウンロードします。
テンプレートをビューにバインドします。
<input type="text" ng-model="myName">
<p ng-bind-template="{{ myName }}"></p>
設定された DOM 要素にはバインドできなくなります。以下の例の二つ目の p タグ内には {{ myName }}
がそのまま表示されます。
<input type="text" ng-model="myName">
<p>{{ myName }}</p>
<p ng-non-bindable>{{ myName }}</p>
AngularJS の初期化処理が完了するまで {{}}
が一瞬だけ表示されてしまうことがあります。これを避けるためには ng-cloak
を指定します。
<input type="text" ng-model="myName">
<p ng-cloak>{{ myName }}</p>
CSS スタイル属性を変更できます。
<p ng-style="myStyle">装飾されるテキスト</p>
<input type="button" value="set color" ng-click="myStyle={color:'red'}">
<input type="button" value="set background" ng-click="myStyle={'background-color':'blue'}">
<input type="button" value="clear" ng-click="myStyle={}">
CSS クラス属性を変更できます。
<style>
.myclass1 { color: #f00; }
.myclass2 { font-size: x-large; }
.myclass3 { text-decoration: underline; }
</style>
<!-- 指定方法 1 -->
<p ng-class="'myclass1'">1</p>
<p ng-class="'myclass2'">2</p>
<p ng-class="'myclass3'">3</p>
<p ng-class="'myclass1 myclass2 myclass3'">1 2 3</p>
<!-- 指定方法 2 -->
<p ng-class="['myclass1']">1</p>
<p ng-class="['myclass2']">2</p>
<p ng-class="['myclass3']">3</p>
<p ng-class="['myclass1', 'myclass2', 'myclass3']">1 2 3</p>
<p ng-init="
_myclass1='myclass1';
_myclass2='myclass2';
_myclass3='myclass3';
">モデルの用意</p>
<p ng-class="[_myclass1, _myclass2, _myclass3]">1 2 3</p>
<!-- 指定方法 3 -->
<p ng-class="{
myclass1: true,
myclass2: false,
myclass3: true}">1 3</p>
条件に合致しない場合は DOM ツリーから要素が完全に削除されます。
<div>
<input type="checkbox" ng-model="myCheck">
表示トグル
</div>
<p ng-if="myCheck">ngIf が真のときのみ表示</p>