我有一些我想从后端检索的应用程序设置,以便通过注入它们可供所有应用程序控制器使用。最有角度的方法是什么?
1)如果我只需要一个或几个控制器的设置,我可以通过路由解析方法检索它们,但是全局应用范围呢? 2)我可以使用.run()方法,但由于调用将是异步的,我没有保证在访问控制器之前我的配置将被加载。
目前我的设置作为json对象返回,我的templates / html文件只是由Web服务器提供。所以我不能在脚本标签中嵌入任何东西,在服务器端解析html或任何类似的技术。
答案 0 :(得分:1)
我会为您的设置创建一项服务。然后使用.run()方法,称为返回应用设置数据的服务:
angular
.module('YourApp',[])
.service('Settings',function(){
this.data = {}
})
.run(function(Settings,$http){
$http
.get('/ajax/app/settings')
.success(function(data){
Settings.data = data
})
})
function Controller($scope,Settings){
// use your Settings.data
}
答案 1 :(得分:1)
有一个干净的插件来完成这项工作。 https://github.com/philippd/angular-deferred-bootstrap
您需要更改bootstrap方法
deferredBootstrapper.bootstrap({
element: document.body,
module: 'MyApp',
resolve: {
APP_CONFIG: function ($http) {
return $http.get('/api/demo-config');
}
}
});
angular.module('MyApp', [])
.config(function (APP_CONFIG) {
console.log(APP_CONFIG);
});