我有一个共享函数,它返回我的AngularJS应用程序中最顶层元素(文档)的范围.
function topScope() {
return angular.element(document).scope();
}
Run Code Online (Sandbox Code Playgroud)
这始终有效,我始终保证可以访问应用程序中的任何子范围(无论是在控制器内还是指令内).
这是我将用它的一个例子:
topScope().$emit('pageReady');
Run Code Online (Sandbox Code Playgroud)
现在我注意到$ rootScope的工作方式也一样.
$rootScope.$emit('pageReady');
Run Code Online (Sandbox Code Playgroud)
哪个也有效并达到同样的效果.但由于$ rootScope设计是"$范围现成的"范围则没有这仍然意味着它实际上是在页面的最上面的范围(创建将继承它的方法和属性的任何范围)?因此作为附加到文档节点的范围对象的父级?
pko*_*rce 24
$rootScope
是给定AngularJS应用程序中所有范围的父范围.由于可以在一个页面上引导多个AngularJS应用程序(仅手动,无法使用ng-app
),因此$rootScope
在一个HTML文档中也可以有多个实例.
每个$rootScope
被"附加"到一方位置ngApp被宣布该元件或通入元件angular.bootstrap如所描述这里.
简而言之,它$rootScope
是一个AngularJS应用程序的所有作用域的根,但没有"超级根"作用域作为给定HTML文档的所有其他作用域的父作用域.
在你的情况下,$rootScope
如果你在整个HTML文档中只有一个AngularJS应用程序,则可能没问题.
归档时间: |
|
查看次数: |
7361 次 |
最近记录: |