controller.jsメモ

AngularJsのcontroller.jsを読んだ際のメモ
controllerSpec.js

$ControllerProvider()

Controllerを生成するサービスを生成する。
registerメソッドを通じてControllerをcontrollersに登録する。

register(name, constructor)

angular.Module.controller(name, constructor);でinvokeQueueに登録される。
injector.jsのloadModules(modulesToLoad)内のrunInvokeQueue(queue)で実行される。

function(expression, locals)

$controllerの実体
Controllerサービスを実装している。
compile.jsで下記のように使用されている。

//$controller('FooCtrl', {$scope:scope});
controllerInstance = $controller(controller, locals);

registerで登録したcontstructorを$injector::instantiate(Type, locals, serviceName)に渡す。
その戻り値をreturnする。