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

モジュールとコントローラー (6/6)

作成:2015-12-12 09:52
更新:2015-12-12 09:52

■モジュールとコントローラーを定義する

では、スクリプトを作成しましょう。今回も、script.jsをそのまま修正して使うことにします。下のリスト欄にサンプルを掲載しておきましたので、この通りに記述して下さい。

作成したら実際にアクセスしてみましょう。入力フィールドに1~3の番号を記入すると、その番号のデータが表示されます。データを保管しているdataプロパティの内容を追記すればもっと多くのデータが扱えます。

今回は、moduleメソッドでモジュールを作成したものを変数に代入し、そこからcontrollerメソッドを呼び出すようにしてあります。まぁ、どちらの書き方でもいいのですが、例えばモジュールにいくつもコントローラーを組み込むような場合は、この書き方のほうが便利でしょう。

ここでは、this.dataに配列としてデータを保管しています。これは2次元配列になっていて、ID番号、名前、メールアドレスといった値が保管されています。getDataメソッドでは、。countプロパティに設定されたインデックス番号のデータを取り出してテキストにまとめreturnしています。

■ng-clickで実行させるには?

今回は、getDataの他に「doAction」というメソッドも用意しておきました。これが、ng-clickで呼び出される処理になります。

ここで行っているのは、引数のnumcountプロパティに設定する、というだけのものです。これでcountの値が変更されると、テンプレートに{{ctl.getData()}}として埋め込まれている表示が瞬時に更新され、指定のデータに切り替わります。

表示の部分はAngularJSにより自動的に更新されるため、アクションメソッドでは単に「設定を保管している値を書き換える」だけでいいのです。普通のJavaScriptのアクション処理とはだいぶ感じが違うのがわかりますね。

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

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

●プログラム・リスト●

var myapp = angular.module('myapp',[]);
myapp.controller('HeloController',
    function(){
        this.count = 0;
        this.data = [
            [0,'nobody','nodata...'],
            [1,'太郎','taro@yamada'],
            [2,'花子','hanako@flower'],
            [3,'幸子','sachico@happy']
        ];
        this.getData = function(){
            return this.data[this.count][0] + ': ' + 
                this.data[this.count][1] + ', ' + 
                this.data[this.count][2] + '.';
        };
        this.doAction = function(num){
            this.count = num;
        }
    }
);

※関連コンテンツ

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