AngularJS:コントローラーのネストとクリックイベント

goto_jp 1,483views 更新:2014年4月24日

サンプルはこちら。
http://codepen.io/KazuyoshiGoto/pen/dHzye

HTML

<div ng-app>
  <div ng-controller="jojos">
    <ul>
      <li ng-repeat="jojo in jojos" ng-controller="jojoController">
        {{jojo.name}} / {{jojo.score}}
        <button ng-click="scoreUp()">+1</button>
      </li>
    </ul>
  </div>
</div>

2行目でまずはAngularJSコントローラーの「jojos」を呼び出し、4行目のリピートを使い後述のJavaScriptで定義している配列を出力しています。

同じく4行目で、もうひとつのコントローラー「jojoController」を呼び出しています。
コントローラーの中で別のコントローラーを呼び出すことも可能です。

ボタンに「ng-click」で「jojoController」で定義されている「scoreUp」を実行させるようにしています。

JavaScript

var jojos = function($scope){
  $scope.jojos = [
    {'name': 'jonasun', 'score': '11.11'},
    {'name': 'joseph', 'score': '22.22'},
    {'name': 'jotaro', 'score': '33.33'}
  ];
};
var jojoController = function($scope){
  $scope.scoreUp = function() {
    $scope.jojo.score++;
  }
}

1行目からの「jojos」は配列を定義しているだけです。

8行目からの「jojoController」は、変数内のスコアを加算する処理をしています。
JS内ではイベントの記述は特にせず、HTMLテンプレート側でイベントのトリガーを置くのが特長です。

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません