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

 溟尛樂_840 发布于 2023-01-19 17:35

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

2 个回答
  • 如前所述,$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.$rootnull.更好地使用$rootScope......

    2023-01-19 17:38 回答
  • $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

    2023-01-19 17:38 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有