LoginSignup
15
15

More than 5 years have passed since last update.

angular.moduleの引数と戻り値のいろいろ

Posted at

前置き

Docsによると、
https://docs.angularjs.org/api/ng/function/angular.module

When passed two or more arguments, a new module is created. If passed only one argument, an existing module (the name passed as the first argument to module) is retrieved.

2つ以上の引数が渡された場合、新しいモジュールが作成されます。引数が一つであれば、既存の(その名前の)モジュールが取得されます。

いろいろ試してみる

var app = angular.module('MyApp', ['ngRoute']);
console.log(app.requires); //["ngRoute"]

var app2 = angular.module('MyApp');
console.log(app2.requires); //["ngRoute"] 第二引数を渡さなければ、getterになる。

var app3 = angular.module('MyApp', []);
console.log(app3.requires); //[] 第二引数を渡せば、新しくmoduleが作成される

console.log(app.requires); //["ngRoute"]
console.log(app2.requires); //["ngRoute"] 別に作成されるので、前もって作ってあるものには影響がない

  • 第二引数を渡せばmoduleを新規作成する。第二引数を渡さなければ、前に作成したmodule名のものを取得。
  • まさしくDocsに書いてある通り。

逆バージョン

angular.module('MyApp');
  • エラーになった

Module 'MyApp' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.

  • 第二引数を渡さなければ、getterとしての役割にしかならないので、すでに作成済みのmoduleがない場合、エラーになる、ということか。

サービス類の登録

var app = angular.module('MyApp', ['ngRoute']);
console.log(app._invokeQueue); //[] //空

var app2 = angular.module('MyApp');
app2.constant('hoge', 1);//app2でconstant登録

console.log(app._invokeQueue[0]); //["$provide", "constant", Arguments[2]]
console.log(app._invokeQueue[0][2][0]); //"hoge" //appでhoge constantが登録されていることが確認できる

その他

var app = angular.module('MyApp', ['ngRoute']);
console.log(app._invokeQueue); //[] //空っぽ

var app2 = angular.module('MyApp', ['ngRoute']);
app2.constant('hoge', 1);//app2でconstant登録

console.log(app._invokeQueue); //[] //appとapp2は別物

まとめ

angular.moduleに第二引数を渡さなければgetterになるので、一々戻り値を変数に確保しておく必要が無い(無駄な変数を作らなくて済む)。また、第二引数の内容が同じでであっても、渡せば新規に作成される。

以上のことから、読み込む順番さえ適切であれば、サービスやディレクティブ単位で別ファイルにすることが容易になる。

15
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
15