如何从后端检索AngularJS的常量

时间:2013-11-06 19:26:34

标签: angularjs

我有一些我想从后端检索的应用程序设置,以便通过注入它们可供所有应用程序控制器使用。最有角度的方法是什么?

1)如果我只需要一个或几个控制器的设置,我可以通过路由解析方法检索它们,但是全局应用范围呢? 2)我可以使用.run()方法,但由于调用将是异步的,我没有保证在访问控制器之前我的配置将被加载。

目前我的设置作为json对象返回,我的templates / html文件只是由Web服务器提供。所以我不能在脚本标签中嵌入任何东西,在服务器端解析html或任何类似的技术。

2 个答案:

答案 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
}

http://docs.angularjs.org/api/angular.Module#methods_run

答案 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);
  });