简要分析angular的$controller服务

大家一般用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然后传入,需要执行的控制器名称和对应的作用域。

你可能感兴趣的:(简要分析angular的$controller服务)