我有一些我想从后端检索的应用程序设置,以便它们可以通过注入提供给我的所有应用程序控制器。最有角度的方法是什么?
1)如果我只需要一个或几个控制器的设置,我可以通过路由解析方法检索它们,但是全局应用程序范围呢?
2)我可以使用 .run() 方法,但是由于调用将是异步的,因此我无法保证在访问控制器之前会加载我的配置。
目前,我的设置作为 json 对象返回,而我的模板/html 文件仅由 Web 服务器提供。所以我不能在脚本标签中嵌入任何东西,在服务器端解析 html 或任何类似的技术。
我有一些我想从后端检索的应用程序设置,以便它们可以通过注入提供给我的所有应用程序控制器。最有角度的方法是什么?
1)如果我只需要一个或几个控制器的设置,我可以通过路由解析方法检索它们,但是全局应用程序范围呢?
2)我可以使用 .run() 方法,但是由于调用将是异步的,因此我无法保证在访问控制器之前会加载我的配置。
目前,我的设置作为 json 对象返回,而我的模板/html 文件仅由 Web 服务器提供。所以我不能在脚本标签中嵌入任何东西,在服务器端解析 html 或任何类似的技术。
有一个简洁的插件可以完成这项工作。https://github.com/philippd/angular-deferred-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);
});
我会为您的设置创建服务。然后使用.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
}