将$ rootScope注入Controller是否有效使用或覆盖AngularJS中$ rootScope下定义的模型/方法?

cod*_*mer 5 angularjs

我在App.run下面定义了一些我在控制器中重写的模型someCtrl:

App.run(['$rootScope', function($rootScope) {
  $rootScope.attempt = 1;
});

function someCtrl($scope, $rootScope) {
  $rootScope.attempt = 2;

  $rootScope.checkAttempt = function () {
    return $rootScope.attempt > 1 ? true : false;    
  };
}
Run Code Online (Sandbox Code Playgroud)

页面上有一个按钮超出someCtrl's范围:

<button class='btn' ng-disabled="checkAttempt()">Who's changing my value?</button>
Run Code Online (Sandbox Code Playgroud)

仅供参考,我知道创建服务或使用emit-broadcaste机制来跨控制器共享数据,但我想知道如何将$ rootScope注入控制器?

Dan*_*yon 10

恕我直言,我认为注入$rootScope控制器很好.我建议使用emit/broadcast.


小智 8

您不需要将$ rootScope注入控制器.当您注入$ scope时,由于范围继承,您可以自动访问$ rootScope中定义的任何内容.见文档.向下滚动到"范围层次结构"部分.