Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 应用程序';主控制器';范围_Javascript_Angularjs_Angularjs Scope - Fatal编程技术网

Javascript 应用程序';主控制器';范围

Javascript 应用程序';主控制器';范围,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,为了进一步理解scopes继承,在阅读之后,我有一个问题。为什么在同一个标记上声明ng应用程序和ng控制器时,该控制器的作用域不等于rootScope <html ng-app="myApp" ng-controller="MainCtrl"></html> app.controller( 'MainCtrl', function( $scope , $rootScope ) { console.log( angular.equals ( $scope ,

为了进一步理解scopes继承,在阅读之后,我有一个问题。为什么在同一个标记上声明
ng应用程序
ng控制器
时,该控制器的作用域不等于
rootScope

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

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

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

 });

应用程序控制器('MainCtrl',函数($scope,$rootScope){
console.log(angular.equals($scope,$rootScope));//false
});

测试:

Angular将始终创建自己的$rootScope,而不管您的控制器声明如何


ng控制器的作用域将从$rootScope继承,就像您调用$rootScope一样。$new()

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


谢谢,KevinStone的链接实际上解释了这个问题,
ngController
具有
scope:true