首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$rootScope与$rootScope.$root的区别

$rootScope与$rootScope.$root的区别
EN

Stack Overflow用户
提问于 2015-10-22 13:50:22
回答 1查看 585关注 0票数 6

$rootScope和$rootScope.$root有什么区别吗?

两者有什么区别?

$rootScope.global.flag = true和$rootScope.$root.global.flag = true

它们是否都访问根范围中的相同变量?

如果是的话,我们是否有需要使用其中任何一种的特殊情况?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-22 14:02:37

角度上的所有范围都是同一个原型的实例。因此,全局服务$rootScope是为指令创建并作为$scope传递给链接函数或控制器的相同类型的对象。

属性$root是该原型的一部分,可在所有作用域上使用。

$rootScope是角创建的第一个作用域。所有作用域都是通过使用现有作用域的$new方法创建的。所以$rootScope是一个特例,因为它是在angular.run()在模块上执行之前创建的。

当您检查$scope.$root的值时,它引用了$rootScope根范围服务提供的相同实例。

因此;

代码语言:javascript
复制
console.log($rootScope === $scope.$root); // will print true

或者像你的榜样一样;

代码语言:javascript
复制
console.log($rootScope === $rootScope.$root); // will also print true

因此,不管如何引用根作用域,根作用域中的变量都是相同的。

代码语言:javascript
复制
console.log($rootScope.global.flag); // prints true
console.log($scope.$root.global.flag); // prints true
console.log($rootScope.$root.global.flag); // prints true

您还可以显式地访问模板表达式中的根范围,如下所示。

代码语言:javascript
复制
<div>{{$root.someValue}}</div>

还有其他属性(如$parent )允许您沿着作用域链向上走,但对于独立作用域(因为它没有父级),$parent将为空。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33282675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档