AngularJSでDOM操作をやってみる

AngularJSでのDOM操作を色々試してみたのでメモ。

ng-bind

Modelの結果を表示します。

HTML

<input type="text" ng-model="name" placeholder="名前を入力"><br>
<span ng-bind="name"></span>さんこんにちは

{{name}}を使って表示するのと動作は同じですが、{{name}}の場合はAngularJSが読み込まれるまでの間の一瞬表示されてしまうことがあるようです。
この回避方法としてng-cloakを使用する方法もあります。
ng-bindのデモページ
 

ng-bind-html

HTMLタグを含むModelの結果を表示します。

HTML

<input type="text" ng-model="name" placeholder="HTMLタグなどを入力"><br>
<span ng-bind-html="name"></span>

JavaScript

angular.module('myModule', ['ngSanitize']);

ng-bindと違い、HTMLタグが含まれるとタグとして処理されます。
ng-bind-htmlのデモページ
 

ng-bind-template

ng-bind-template内のテンプレートを表示します。

HTML

<input type="text" ng-model="firstName" placeholder="first name"><br>
<input type="text" ng-model="lastName" placeholder="last name"><br>
<p ng-bind-template="{{firstName}} {{lastName}}"></p>

ng-bind-templateはng-bindと違い、複数の {{}} を含むことができます。
ng-bind-templateのデモページ
 

ng-non-bindable

テンプレートの表示をしたくない場合に使用します。

HTML

<input type="text" ng-model="name" placeholder="名前"><br>
<p>名前: {{name}}</p>
<p ng-non-bindable>名前: {{name}}</p>

ng-non-bindableのデモページ
 

ng-cloak

AngularJSが読み込まれるまでの間の一瞬{{}}が表示されるのを解消します。

HTML

<input type="text" ng-model="name" placeholder="名前"><br>
<p ng-cloak>名前: {{name}}</p>

ng-cloakのデモページ
 

ng-style

styleを設定します。

HTML

<button ng-click="color={color: '#ff0000'}">赤色</button>
<button ng-click="color={color: '#0000ff'}">青色</button>
<p ng-style="color">ここの文字色が変わります。</p>

ng-styleのデモページ
 

ng-class

class名を設定します。

HTML

<p ng-class="'sample01'">サンプルテキスト1</p>

ng-classのデモページ
 

ng-show・ng-hide

ng-showは値の評価がtrueのとき表示、falseのとき非表示になります。
ng-hideは逆に値の評価がtrueのとき非表示、falseのとき表示になります。

HTML

<div ng-init="flag = true">
<button ng-click="flag = !flag">切り替え</button>
	<div>現在のフラグ中身:{{flag}}</div>
	<div>ng-show↓</div>
	<div ng-show="flag">ng-showの切り替え中身</div><br>
	<div>ng-hide↓</div>
	<div ng-hide="flag">ng-hideの切り替え中身</div>
</div>

ng-show・ng-hideのデモページ
 

ng-open

表示・非表示の切り替えを行います。

HTML

<details ng-open="open">
	<summary>スイッチ</summary>
	<ul>
		<li>JavaScript</li>
		<li>jQuery</li>
		<li>AngularJS</li>
	</ul>
</details>

ng-openのデモページ
 

ng-if

値の評価がfalseのときはDOMから削除、trueのときはDOMに追加されます。

HTML

<div ng-init="flag = true">
	<button ng-click="flag = !flag">切り替え</button>
	<p ng-if="flag">サンプルテキスト</p>
</div>

ng-ifのデモページ
 

ng-switch

switch文と同じように、ng-switchで評価式を定義、ng-switch-whenで各ケースの設定、ng-switch-defaultでデフォルトを設定します。

HTML

<div ng-init="flag">
	<p>1 + 1 = 2 ?</p>
	<button ng-click="flag = 'yes'">はい</button>
	<button ng-click="flag = 'no'">いいえ</button>

	<div ng-switch="flag">
		<div ng-switch-when="yes">正解</div>
		<div ng-switch-when="no">不正解</div>
		<div ng-switch-default>選択してください</div>
	</div>
</div>

ng-switchのデモページ
 

ng-repeat・ng-class-even・ng-class-odd

ng-repeatは繰り返し処理を行います。
ng-class-evenとng-class-oddはそれぞれ、繰り返し中の偶数時、奇数時にclassを設定します。

HTML

<div ng-init="arr = ['sample01', 'sample02', 'sample03', 'sample04', 'sample05', 'sample06', 'sample07']">
	<ul>
		<li ng-repeat="item in arr" ng-class-even="'even'" ng-class-odd="'odd'">{{item}}</li>
	</ul>
</div>

ng-repeat・ng-class-even・ng-class-oddのデモページ
 

【参考サイト】

 

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年5月
 1234
567891011
12131415161718
19202122232425
262728293031