当我定义一个控制器时,我可以请求范围对象作为参数:
angular.module('custom', []).controller('custom', function($scope) {});
在运行期间,进样器初始化控制器。我的问题是它如何确定注入哪个$scope
对象?它取决于哪个组件触发控制器初始化?
例如,如果控制器的初始化由ng-controller="custom"
指令触发,或者指令需要控制器:
angular.module('custom', []).directive(function() {
return {
"controller":"custom",
}
});
然后我猜想与找到该指令的DOM元素相关联的范围将被注入控制器。
因此,如果选择正确的范围取决于哪个组件触发控制器初始化,那么触发控制器初始化的方法是什么,然后选择哪个范围呢?
答案 0 :(得分:0)
角度应用程序有一个根作用域,控制器只是扩展该作用域创建子作用域。
$ rootElement是使用ng-app或angular.bootstrap()引导的元素。
与元素和范围的关联只对调试有帮助。尝试在检查html时打开控制台,然后在命令行中运行" angular.element($ 0)"将范围扩展到" angular.element($ 0).scope()"
指令可以具有隔离范围。这是因为第三方指令不需要受其父母范围的影响。
可以使用$ controller服务创建控制器,并使用$ controllerProvider注册。
ng-controller实例化一个像$ controller服务那样的控制器。您至少可以使用$ controller服务尽可能多地使用相同的名称实例化控制器(尽管我不确定使用ng-controller)。