Javascript $rootScope和$rootScope之间的差异。$root
$rootScope和$rootScope.$root之间有什么区别吗 两者的区别是什么 $rootScope.global.flag=true和$rootScope.$root.global.flag=true 它们是否都访问根范围中的同一个变量Javascript $rootScope和$rootScope之间的差异。$root,javascript,angularjs,rootscope,angularjs-rootscope,Javascript,Angularjs,Rootscope,Angularjs Rootscope,$rootScope和$rootScope.$root之间有什么区别吗 两者的区别是什么 $rootScope.global.flag=true和$rootScope.$root.global.flag=true 它们是否都访问根范围中的同一个变量 如果是这样的话,是否有任何特殊情况下我们必须使用它们中的任何一个?角度中的所有范围都是同一原型的实例。因此,全局服务$rootScope与为指令创建的对象类型相同,并作为$scope或控制器传递给链接函数 属性$root是该原型的一部分,可在所有范围
如果是这样的话,是否有任何特殊情况下我们必须使用它们中的任何一个?角度中的所有范围都是同一原型的实例。因此,全局服务
$rootScope
与为指令创建的对象类型相同,并作为$scope
或控制器传递给链接函数
属性$root
是该原型的一部分,可在所有范围内使用
$rootScope
是Angular创建的第一个范围。所有作用域都是使用现有作用域中的$new
方法创建的。因此,$rootScope
是一种特殊情况,因为它是在模块上执行angular.run()
之前创建的
当您检查$scope.$root
的值时,它引用了根范围服务为$rootScope
提供的相同实例
因此,
console.log($rootScope === $scope.$root); // will print true
或者像你的例子一样
console.log($rootScope === $rootScope.$root); // will also print true
因此,是的,根范围中的变量是相同的,无论您如何引用根范围
console.log($rootScope.global.flag); // prints true
console.log($scope.$root.global.flag); // prints true
console.log($rootScope.$root.global.flag); // prints true
您还可以像这样在模板表达式中显式访问根范围
<div>{{$root.someValue}}</div>
{{$root.someValue}
还有其他属性,如$parent
,可以让您沿着作用域链走,但是$parent
对于独立作用域将为空(因为它没有父级)