0

只是为了了解更多范围继承,在阅读完这篇文章后我有一个问题。为什么当我们在同一个标​​签上声明ng-appandng-controller时,这个控制器的作用域不等于rootScope?

 <html ng-app="myApp" ng-controller="MainCtrl"></html>

 app.controller( 'MainCtrl', function( $scope , $rootScope ) {

    console.log( angular.equals ( $scope , $rootScope ) ); // false

 });

测试:http ://plnkr.co/edit/7mAFeZ?p=preview

4

2 回答 2

1

无论您的控制器声明如何,Angular 都会创建自己的 $rootScope。

ng-controller 的作用域将从 $rootScope 继承,就好像你调用了 $rootScope.$new()

于 2013-10-09T06:20:49.617 回答
1

每个控制器都定义了自己的嵌套范围,其中$rootScope的(最终)祖先。如果您有点好奇,请查看ngController指令的定义。它设置了一个新的范围 ( scope: true) 并将自己设置为控制器。

https://github.com/angular/angular.js/blob/master/src/ng/directive/ngController.js#L164

于 2013-10-09T06:23:22.857 回答