$ scope。$ root和$ rootScope有什么区别?

Rishul Matta:

我在控制器中看到$ scope有$ root,这是什么?与可以注入控制器的$ rootScope有何不同?

伊戈尔·马里克(Igor Malyk):

$rootScopevar指向所有作用域的父级,可以在任何地方注入。所有其他范围是的子级$rootScope它们是通过的$new方法创建的,$rootScope因此每个范围都继承自$rootScope

Scope构造函数的定义中的角度源中有一行

 function Scope() {
   this.$id = nextUid();
 ...
 this['this'] = this.$root =  this;
 ...

似乎$rootvar只是this创建的第一个作用域- 的占位符$rootScope

接下来是这段代码$new方法:

  $new: function(isolate) {
      ...

    if (isolate) {
      child = new Scope();
      child.$root = this.$root;
   ...
   return child;

因此$root,每个作用域子对象var $rootScope都是对的引用$rootScope这些孩子中的所有孩子都会得到相同的参考$rootScope

我认为最好使用$rootScopevia依赖项注入,因为它是一种显式且总体上更常用的引用$rootScope

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章