我有问题在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>';
}
})();
答案 0 :(得分:7)
您在配置阶段不需要rootScope
,只需使用.run()
即可。
angular
.module('uliappApp')
.run(['$rootScope', function($rootScope){
$rootScope.concessionLoadingScreen = true;
}])
答案 1 :(得分:1)
在角度应用程序的配置阶段,您无法使用$rootScope
。
只能将constant
和provider
注入配置阶段。
您可以使用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!
});
一切顺利。