大家一般用angular的$controller的时候都是用如下的方式:
angular.module('app',[])
.controller('appController',function{})
这样的方式是让angular自动去寻找程序的入口ng-app,然后自动解析依赖注入,并且声成实例。
其实在angular内部执行过程如下
//使用注射器加载应用
var injector=angular.injector(['ng','app']);
//通过注入器加载$controller服务
var $controller=injector.get('$controller');
var scope=injector.get('$rootScope').$new();
//加载控制器并传入一个作用域,同angular在运行时的一样
var myController=$controller('appController',{$scope:scope})
这种是通过显式的注入声明了依赖关系。
从代码中可以看出,如果要单独应用$controller这个服务的情况下,这种情况比较少,不如需要在服务函数的参数中动态的传入控制器的名字的时候,需要使用$controller,使用的方法就是通过依赖注入取得这个$controller然后传入,需要执行的控制器名称和对应的作用域。<p>