2

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

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

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

4

2 回答 2

1

有一个简洁的插件可以完成这项工作。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);
  });
于 2014-05-10T17:15:53.403 回答
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

于 2013-11-06T20:28:36.650 回答