AngularJSのビルトインのディレクティブを使ってイベントを処理する方法について確認しました。
デモとコードサンプルはこちら。
(1)AngularJSのイベントを処理するディレクティブ
ディレクティブの名前でどのようなイベントを処理するか推測できるかと思います。
ng-blur
ng-change
ng-click
ng-copy
ng-cut
ng-paste
ng-dblclick
ng-focus
ng-keydown
ng-keypress
ng-keyup
ng-mousedown
ng-mouseenter
ng-mouseleave
ng-mousemove
ng-mouseover
ng-mouseup
ng-submit
(2)サンプルコード
デモとコードサンプルはこちら。
1)シンプルな使用例
下記例では、ボタンをクリックするとng-clickディレクティブを使って”btnColor1″という変数に’btn-success’というBootstrap3のCSSクラス名を設定しています。
ng-click=”btnColor1=’btn-success'”
“btnColor1″という変数は、ng-classディレクティブを使ってボタンのCSSを設定しているので、クリックするとボタンの色が変わります。他のイベントについても同様です。
<button class="btn" ng-class="btnColor1" ng-click="btnColor1='btn-success'" ng-mouseenter="btnColor1='btn-primary'" ng-mouseleave="btnColor1='btn-defult'" > イベント処理1 </button>
2)$eventオブジェクトを使った例
イベントディレクティブは、イベントオブジェクトを$eventとして利用することが出来ます。
下記例では、$eventオブジェクトを使ってイベントのタイプを取得し、イベントのタイプ毎に処理を切替えています。
このときAngularJSのディレクティブ(例ng-mouseenter)の名前とイベントオブジェクトのタイプで取得する値の名前(mouseover)が一致しない場合があるので注意します。下記サンプルではconsole.logで実際に検知したイベントの名前を確認しています。
<button class="btn" ng-class="btnColor2" ng-click="handleEvent($event)" ng-mouseenter="handleEvent($event)" ng-mouseleave="handleEvent($event)" > イベント処理2 </button> (スクリプト) $scope.handleEvent = function (e) { console.log("イベントのタイプ: " + e.type); switch (e.type){ case "mouseover": $scope.btnColor2 = "btn-primary"; break; case "mouseenter": $scope.btnColor2 = "btn-primary"; break; case "click": $scope.btnColor2 = "btn-success"; break; default: $scope.btnColor2 = "btn-default"; break; } }関連記事の目次
AngularJSの特徴、仕組み
ビルトインディレクティブ
- ビルトインのディレクティブの概要
- データバインディングのディレクティブの概要
- ng-repeatを使ってリスト、テーブル、フィルター
- ng-includeを使って別のHTMLファイルを埋め込み
- ng-switchを使って内部にあるHTMLテンプレートの表示を切り替え
- ng-if、ng-show、ng-hideを使って表示、非表示を切り替え
- ng-class、ng-styleを使ってCSSを設定
- イベント処理
- 有効、無効を切替えるディレクティブ
- フォームの入力チェックを行い、動的にCSS追加
- ng-optionsを使ってSelectメニューを作成
- ng-repeatを使ってラジオボタンを作成
- ビルトインのフィルターの使用方法
- ビルトインのフィルターで関数を使用
- カスタムフィルターの使用方法
- Bootstrap3を使ってページング
- スクリプト内でフィルターを使用、既存のフィルターを拡張
サービス
- サービスの概要とfactory、service、providerの使い分け
- $qサービスでpromise/deferredパターン
- $httpサービスの概要、サーバーからJSONデータ取得
- $httpサービスのPOSTでデータ送信
- $qサービスを使ってhttpリクエストを複数実行
- $httpサービスのinterceptorの使用方法
- AngularJSのwithCredentialsの設定、CORS
- $timeoutサービスと$intervalサービス
- $resourceサービスを使ってREST
- $locationサービスを使ってURLを操作
- $routeサービスと$resourceサービスを使ったサンプルを作成
- routeChangeSuccessを使ってflashメッセージ表示
- JavaScript、CSSを含むHTMLデータをバインドして表示
カスタムディレクティブ
AngularJSの特徴、仕組み
ビルトインディレクティブ
- ビルトインのディレクティブの概要
- データバインディングのディレクティブの概要
- ng-repeatを使ってリスト、テーブル、フィルター
- ng-includeを使って別のHTMLファイルを埋め込み
- ng-switchで内部にあるHTMLテンプレートの表示を切り替え
- ng-if、ng-show、ng-hideを使って表示、非表示を切り替え
- ng-class、ng-styleを使ってCSSを設定
- イベント処理
- 有効、無効を切替えるディレクティブ
- フォームの入力チェックを行い、動的にCSS追加
- ng-optionsを使ってSelectメニューを作成
- ng-repeatを使ってラジオボタンを作成
- ビルトインのフィルターの使用方法
- ビルトインのフィルターで関数を使用
- カスタムフィルターの使用方法
- Bootstrap3を使ってページング
- スクリプト内でフィルターを使用、既存のフィルターを拡張
サービス
- サービスの概要とfactory、service、providerの使い分け
- $qサービスでpromise/deferredパターン
- $httpサービスの概要、サーバーからJSONデータ取得
- $httpサービスのPOSTでデータ送信
- $qサービスを使ってhttpリクエストを複数実行
- $httpサービスのinterceptorの使用方法
- AngularJSのwithCredentialsの設定、CORS
- $timeoutサービスと$intervalサービス
- $resourceサービスを使ってREST
- $locationサービスを使ってURLを操作
- $routeサービスと$resourceサービスを使ったサンプルを作成
- routeChangeSuccessを使ってflashメッセージ表示
- JavaScript、CSSを含むHTMLデータをバインドして表示
カスタムディレクティブ