libro
www.tuyano.com
初心者のためのAngularJS入門

ディレクティブを作ろう (6/7)

作成:2016-01-09 09:00
更新:2016-01-09 09:00

■イベントを設定する

ディレクティブは、表示をカスタマイズするだけしかできないわけではありません。タグにイベントを組み込み、「動くディレクティブ」を作ることもできます。

これは、別に特別なテクニックが必要なわけではありません。directiveで渡されるelement引数は、DOMエレメントですから、そのままイベントの設定が行えます。onclick属性などに関数を代入したり、あるいはaddEventListenerメソッドを呼び出して設定すればいいのです。

簡単なサンプルを下にあげておきましょう。これは、クリックするとアラートを表示する<click>タグのディレクティブです。例えば、
<click>This is click sample!</click>

こんな感じでタグを用意してみましょう。このテキスト部分をクリックすると、画面にアラートウインドウが現れ、「you click "This is click Sample!"!」とメッセージが表示されます。

ここでは、returnする関数オブジェクト内で、以下のようにしてイベントを組み込んでいます。
element[0].addEventListener("click", function(){
    ……クリック処理……
}, false);

普通のイベント組み込みと同じですね。これで、ディレクティブのDOMエレメントにも普通にイベントを追加することができます。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

var myapp = angular.module('myapp',[]);

myapp.directive('click', function(){
    return function(scope, element, attrs){
        element[0].addEventListener("click", function(){
            var txt = this.textContent;
            alert('you click "' + txt + '"!');
        }, false);
    };
});

※関連コンテンツ

「初心者のためのAngularJS入門」に戻る