ギジュツのハナシ

駆け出しフロントエンドエンジニアが気の向くままに

AngularJSを試してmoduleとcontrollerの扱いにハマッた

最近AngularJSの話題をよく目にするので以下の記事を参考に、サンプルを書いて遊んでいた。

AngularJSを使ってみました
お前のAngular.jsはもうMVCではない。と言われないためのTutorial
公式ドキュメント

ざっくりと雰囲気は理解できたつもりなので実際のサービス運用のための設計を考えてみたのだが、どうにもmoduleの扱いが理解できない。出回っているコードではcontroller群をControllersなどのmoduleにして扱うのがオススメなようだ。

 angular.module('controllers', []).
     controller('hogeController'. function ($scope) {
         $scope.popAlert = function () {
             alert('hoge');
         }
     }).
     controller('hugaController', function ($scope) {
         $scope.popAlert = function () {
             alert('huga');
         }
     });

ただ、これでは見てわかる通り、controller内部のコードやcontroller自体が増えた場合に見通しが悪くなる。一般的にやられているように用途別のcontroller毎にファイルを切り分けて管理したいのだが、一度angular.module()で定義したmoduleを後から呼び出す方法がヒットしない。moduleはそもそもそういう使い方をするものではないのか、それともググり力が低いのか。何にしろ、しっかりmoduleやらDI周りの理解を深めたほうが良さそう。ぐぬぬ

追記

var controllers = angular.module('controllers', []);をmain.js的なものに書いて、後はそれぞれcontrollerの別ファイルでcontrollers.controller()と書くだけでいいっぽい。todoMVCのサンプルに書いてあった。灯台下暗し。