在config angularJs中注入$ rootScope

时间:2016-12-19 07:36:41

标签: javascript angularjs

我有问题在config angularJS中注入$ rootScope,这是我的代码,但仍然是错误,也许有人帮我如何在config angularJS中注入$ rootScope。

感谢。

(function() {
  'use strict';

  angular
    .module('uliappApp')
    .directive('angular-loading-bar', ['cfpLoadingBarProvider'])
    .config(cfpLoadingBarProvider);

  cfpLoadingBarProvider.$inject = ['cfpLoadingBarProvider', '$rootScope'];

  function cfpLoadingBarProvider(cfpLoadingBarProvider, $rootScope) {
    cfpLoadingBarProvider.includeBackdrop = true;
    console.log(rootScope.concessionLoadingScreen);
    cfpLoadingBarProvider.spinnerTemplate = '<div class="loading-bar-container">'
        + '<div id="loading-bar-spinner"><div class="spinner-icon"></div></div></div>';
  }
})();

3 个答案:

答案 0 :(得分:7)

您在配置阶段不需要rootScope,只需使用.run()即可。

angular
    .module('uliappApp')
    .run(['$rootScope', function($rootScope){
        $rootScope.concessionLoadingScreen = true;
    }])

答案 1 :(得分:1)

在角度应用程序的配置阶段,您无法使用$rootScope

只能将constantprovider注入配置阶段。

您可以使用run阶段,或创建provider(实际上是服务)来保存您想要的配置。

// Option 1 - during run
angular
    .module('yourApp')
    .run(['$rootScope', function($rootScope) {
    }])

// Option 2 - provider
angular
    .module('yourApp')
    .provider('yourSettings', function() {
        var $this = this;

        this.yourSettings = 'yourValue';

        this.$get = function() {
            return $this;
        }
    })
angular
    .module('yourApp')
    .config(['yourSettingsProvider', function(yourSettingsProvider) {
        // You can use yourSettingsProvider.yourSettings 
    }])

答案 2 :(得分:1)

在配置阶段,只能注入提供者。

基本上,angularjs首先调用config方法,然后调用run方法。在配置期间,只有提供商可用。然后可以使用提供程序来创建服务实例。 因此,您可以使用.run来注入$rootScope

例如,不允许以下内容:

myMod.config(function(greeting) {
  // WON'T WORK -- greeting is an *instance* of a service.
  // Only providers for services can be injected in config blocks.
});

您有权访问的是您所提供服务的任何提供商:

myMod.config(function(greetingProvider) {
  // ok fine!
});

一切顺利。