在阅读this post之后,我只想了解范围继承,我有一个问题。为什么当我们在同一个标签上声明ng-app
和ng-controller
时,此控制器的范围不等于rootScope
?
<html ng-app="myApp" ng-controller="MainCtrl"></html>
app.controller( 'MainCtrl', function( $scope , $rootScope ) {
console.log( angular.equals ( $scope , $rootScope ) ); // false
});
答案 0 :(得分:1)
无论您的控制器声明如何,Angular都将始终创建自己的$ rootScope。
ng-controller的范围将继承自$ rootScope,就像你调用$ rootScope一样。$ new()
答案 1 :(得分:1)
每个控制器都定义了自己的嵌套范围,其中$rootScope
是(终极)祖先。如果您有点好奇,请查看ngController
指令的定义。它设置了一个新的范围(scope: true
)并将自己设置为控制器。
https://github.com/angular/angular.js/blob/master/src/ng/directive/ngController.js#L164