我是角度js的新蜜蜂,我一直在编码中使用$ scope。但是,我理解范围是用于全局变量以确保我在angularJs文档上搜索但随后找到了根本范围的详细信息,这对我来说很清楚。 有没有人帮我理解根镜和范围之间的主要区别。什么时候用?内部如何运作。
答案 0 :(得分:1)
范围有hierarchy。
每个Angular应用程序只有一个根作用域,但可能有 几个儿童范围。
应用程序可以有多个范围,因为有些指令 创建新的子范围(请参阅指令文档以查看哪些 指令创建新范围)。创建新范围时,它们是 添加为其父范围的子项。这会创建一个树结构 这与他们所附的DOM相似。
当你有类似的东西时:
{{name}}
它将查看此属性的范围。如果没有这样的财产 找到,然后它搜索父范围,依此类推,直到根 范围已达到。在JavaScript中,这种行为被称为原型 继承,子范围原型继承自他们的 父母。
如果您查看下面的图片,则在最内部范围{{name}}解析为ng-repeat中的属性。在GreetCtrl范围中,它解析为此控制器中定义的属性。如果此控制器没有定义属性并且它在$ rootScope中定义,则会显示$ rootScope值。
因此,$rootScope是根,全局或最顶层的父范围:
每个应用程序都有一个根作用域。所有其他范围都是 根范围的后代范围。范围提供了分离 模型和视图,通过观察模型的机制 变化。
有关范围如何工作的信息,请参阅docs。
答案 1 :(得分:0)
$ scope不是全局变量,它在特定模块中使用,并且它可以跨控制器使用,而$ rootscope就像跨模块的全局变量,而且我们可以有几个$ scope但我们只能在我们的内部有一个$ rootscope应用程序,即$ rootscope用于globla变量,$ scope用于模块内的局部变量。