注入器使用什么逻辑来确定传递给控制器​​的范围

时间:2014-08-19 08:21:29

标签: javascript angularjs

当我定义一个控制器时,我可以请求范围对象作为参数:

angular.module('custom', []).controller('custom', function($scope) {});

在运行期间,进样器初始化控制器。我的问题是它如何确定注入哪个$scope对象?它取决于哪个组件触发控制器初始化?
例如,如果控制器的初始化由ng-controller="custom"指令触发,或者指令需要控制器:

angular.module('custom', []).directive(function() {
    return {
       "controller":"custom",
    }
}); 

然后我猜想与找到该指令的DOM元素相关联的范围将被注入控制器。

因此,如果选择正确的范围取决于哪个组件触发控制器初始化,那么触发控制器初始化的方法是什么,然后选择哪个范围呢?

1 个答案:

答案 0 :(得分:0)

角度应用程序有一个根作用域,控制器只是扩展该作用域创建子作用域。

$ rootElement是使用ng-app或angular.bootstrap()引导的元素。

与元素和范围的关联只对调试有帮助。尝试在检查html时打开控制台,然后在命令行中运行" angular.element($ 0)"将范围扩展到" angular.element($ 0).scope()"

指令可以具有隔离范围。这是因为第三方指令不需要受其父母范围的影响。

可以使用$ controller服务创建控制器,并使用$ controllerProvider注册。

ng-controller实例化一个像$ controller服务那样的控制器。您至少可以使用$ controller服务尽可能多地使用相同的名称实例化控制器(尽管我不确定使用ng-controller)。