rootJcope与angularJs中的范围之间的主要区别是什么。内部如何运作

时间:2016-09-03 07:22:25

标签: angularjs scope rootscope

我是角度js的新蜜蜂,我一直在编码中使用$ scope。但是,我理解范围是用于全局变量以确保我在angularJs文档上搜索但随后找到了根本范围的详细信息,这对我来说很清楚。 有没有人帮我理解根镜和范围之间的主要区别。什么时候用?内部如何运作。

2 个答案:

答案 0 :(得分:1)

范围有hierarchy

  

每个Angular应用程序只有一个根作用域,但可能有   几个儿童范围。

     

应用程序可以有多个范围,因为有些指令   创建新的子范围(请参阅指令文档以查看哪些   指令创建新范围)。创建新范围时,它们是   添加为其父范围的子项。这会创建一个树结构   这与他们所附的DOM相似。

当你有类似的东西时:

{{name}}
  

它将查看此属性的范围。如果没有这样的财产   找到,然后它搜索父范围,依此类推,直到根   范围已达到。在JavaScript中,这种行为被称为原型   继承,子范围原型继承自他们的   父母。

如果您查看下面的图片,则在最内部范围{{name}}解析为ng-repeat中的属性。在GreetCtrl范围中,它解析为此控制器中定义的属性。如果此控制器没有定义属性并且它在$ rootScope中定义,则会显示$ rootScope值。

Scope heirachy

因此,$rootScope是根,全局或最顶层的父范围:

  

每个应用程序都有一个根作用域。所有其他范围都是   根范围的后代范围。范围提供了分离   模型和视图,通过观察模型的机制   变化。

有关范围如何工作的信息,请参阅docs

答案 1 :(得分:0)

$ scope不是全局变量,它在特定模块中使用,并且它可以跨控制器使用,而$ rootscope就像跨模块的全局变量,而且我们可以有几个$ scope但我们只能在我们的内部有一个$ rootscope应用程序,即$ rootscope用于globla变量,$ scope用于模块内的局部变量。