SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

次世代Webアプリケーションフレームワーク「Angular」の活用

「Angular 2」のデータバインディングとディレクティブ記述法

次世代Webアプリケーションフレームワーク「Angular」の活用 第2回


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

Angular 2のイベント定義

 データバインディングの一種として、画面上のボタンが押された時などのイベントを定義できます。Angular 2でコントロールにイベントを定義するにはリスト5のように記述します。

リスト5 Angular 2のイベント定義(angular2-002-event/app/app.component.ts)
<!-- (click)属性でクリックイベントを定義 -->
<button (click)="onClickButton()">ボタン1</button>
<button (click)="onClickButtonWithEvent($event)">ボタン2</button>
<button (click)="onClickButtonWithEvent($event)">ボタン3</button>

 「(click)」のように、イベント名をカッコで囲んだ属性に、イベントを処理するメソッドを記述します。1行目のように引数なしの記述と、2〜3行目のようにイベントオブジェクト$eventを指定する記述ができます。

 メソッドの記述はAppComponentコンポーネントの定義内にリスト6のように行います。

リスト6 イベントハンドラの実装(angular2-002-event/app/app.component.ts)
export class AppComponent {
  /**
   * イベント引数なしのハンドラ ...(1)
   */
  onClickButton() {
    alert("ボタンが押されました");
  }
  /**
   * イベント引数ありのハンドラ ...(2)
   */
  onClickButtonWithEvent(event:any) {
    // targetプロパティでイベントを発生させたオブジェクトを取得 ...(3)
    var button = event.target;
    // ボタンのラベルをtextContentプロパティから取得して表示 ...(4)
    alert("ボタン「" + button.textContent + "」が押されました");
  }
}

 (1)はイベント引数なしの場合の処理です。ここではalertメソッドで固定のメッセージを表示しています。一方、(2)はイベント引数ありの場合の処理です。(3)でevent.targetプロパティからオブジェクト(ここではボタン)を取得し、ボタンオブジェクトから(4)でtextContentプロパティ(ボタンの文言)をalertメソッドで表示しています。

 リスト5、6を実行してボタン1を押すとリスト6(1)の処理、ボタン2とボタン3を押すとリスト6(2)の処理で、それぞれメッセージが表示されます。ボタン2とボタン3の場合、押されたボタンの文言がメッセージに反映されます。

図2 Angular 2のイベント定義(angular2-002-event)
図2 Angular 2のイベント定義(angular2-002-event)

 AngularJS 1でのリスト6と等価な記述はリスト7のようになります。(click)の代わりにng-click属性で記述します。

リスト7 AngularJS 1のイベント定義(angularjs1-samples/002-event.html)
<!-- ng-click属性でクリックイベントを定義 -->
<button ng-click="onClickButton()">ボタン1</button>
<button ng-click="onClickButtonWithEvent($event)">ボタン2</button>
<button ng-click="onClickButtonWithEvent($event)">ボタン3</button>

次のページ
ディレクティブは記述ルールに着目

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
次世代Webアプリケーションフレームワーク「Angular」の活用連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト  吉川 英一(ヨシカワ エイイチ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9596 2017/04/24 11:01

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング