gpt4 book ai didi

javascript - $rootScope 和 $rootScope.$root 的区别

转载 作者:数据小太阳 更新时间:2023-10-29 05:29:21 26 4
gpt4 key购买 nike

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

有什么区别

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

他们是否都访问了rootscope中的同一个变量?

如果是这样,是否有任何特定情况我们必须使用它们中的任何一个?

最佳答案

Angular 中的所有作用域都是同一原型(prototype)的实例。因此,全局服务 $rootScope 是为指令创建并作为 $scope 或 Controller 传递给链接函数的相同类型的对象。

$root 属性是该原型(prototype)的一部分,可用于所有范围。

$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>

还有其他属性,例如 $parent 可以让您沿着作用域链向上走,但是 $parent 对于独立作用域来说将为 null(因为它没有父级) .

关于javascript - $rootScope 和 $rootScope.$root 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33282675/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com