Ris*_*tta 42 javascript angularjs angularjs-scope
我在控制器中看到$ scope有$ root,这是什么?它与$ rootScope的不同之处在于可以在控制器中注入?
Igo*_*lyk 71
$rootScopevar指向所有范围的父级,可以在任何地方注入.所有其他范围都是儿童的$rootScope.它们是通过$new方法创建的,$rootScope因此每个范围都继承自$rootScope.
在Scope构造函数 定义中的角度源中有一行:
function Scope() {
this.$id = nextUid();
...
this['this'] = this.$root = this;
...
Run Code Online (Sandbox Code Playgroud)
似乎$rootvar只是this第一个创建范围的占位符- $rootScope.
接下来在方法中有这段代码$new:
$new: function(isolate) {
...
if (isolate) {
child = new Scope();
child.$root = this.$root;
...
return child;
Run Code Online (Sandbox Code Playgroud)
所以$root每个范围子的var $rootScope都是一个引用$rootScope.这些孩子的所有孩子都会得到同样的参考$rootScope
在我看来,最好使用$rootScopevia依赖注入,因为它是一种明确的,总体上更常用的引用方式$rootScope
Dan*_*y R 28
如前所述,$scope.$root持有一个参考$rootScope.
不幸的是,使用$scope.$root和使用之间存在差异$rootScope:
$scopeIS是根时,它的$root属性是null$scope.$root仅在隔离范围上分配:https:
//github.com/angular/angular.js/blob/v1.3.6/src/ng/rootScope.js#L204所以,你可能会遇到这样的情况$scope.$root是null.更好地使用$rootScope......
| 归档时间: |
|
| 查看次数: |
38464 次 |
| 最近记录: |