AngularJS Module定義のエラー
Uncaught Error: [$injector:nomod] 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.
- myappがおかしい
- moduleが見つからない
- module作成したいなら2つめの引数入れて
的なとこですかね。まぁエラーメッセージからでもわかるのですが勉強がてらちゃんと見てみます
リファレンス
https://code.angularjs.org/1.4.7/docs/api/ng/function/angular.module
requiresはoptionalですがモジュールの作成時は必須のようです
逆を言えば呼び出し時は不要です。
依存モジュールが不要な場合は[]
を指定すればOK
ソース
それっぽいチェックはこの辺り
https://github.com/angular/angular.js/blob/v1.4.7/src/loader.js#L92-L97
ensureの3つ目の引数でfunctionを渡してその中でrequiresの有無をチェックしています
https://github.com/angular/angular.js/blob/v1.4.7/src/loader.js#L17-L19
||で繋げているので、obj[name]がtrue(=2回目の呼び出し)であれば3つ目の関数は呼ばれません
そのため呼び出し時はrequiresのチェックが呼ばれないかつ既にあるmoduleを返すわけですね
キャッシュでよく使う書き方ですね
検証
// NG var app = angular.module('myapp');
// OK 2つ目はreadのため問題ない var app = angular.module('myapp', []); var app2 = angular.module('myapp')
その他
moduleにはngやngLocalが登録されている模様
そこに自前のmoduleが追加されていく形??