我在我的angularjs ui-route项目上工作。
在.run()
核心中,我将一些变量放在名为clientid
的{{1}}中。
在某些时候,我需要在$rootScope
核心中使用存储变量。
我知道我无法在.config()
核心中使用$rootScope
服务。
所以我的问题是如何将.config()
变量从clientid
传递到$rootScope
。也许我可以使用任何其他服务?
答案 0 :(得分:3)
当然,使用$ rootScope将是错误的决定。因为没有人喜欢污染全球范围,还有其他原因。您可以考虑创建一个名为settings
的常量,并在任何角度组件中使用它,例如.run
块,config
阶段,service
,provider
等等。
angular.module('mainModule').constant('settings', {
clientId: 1123 //some inital value
})
虽然您可以从配置阶段覆盖此值。
angular.module('mainModule').config(['settings', configFn])
function configFn(settings){
//routes registers here
//other awesome stuf
//set clientId here
//Assuming your clientId will be available, no async operation.
if(someValue === 1)
settings.clientId = 'asd12';
else
settings.clientId = 'asd34';
}
此后,您可以在run
块
angular.module('mainModule').run(['settings', runBlock])
function runBlock(settings){
console.log(settings);
}
注意:选择
constant
背后的原因是,这种风味可以在任何角度组件中以注射形式提供。