哪个是在Angular 1.5中的$ rootScope中存储多个外部json文件的最佳方法?

时间:2016-04-29 20:26:53

标签: angularjs json angularjs-rootscope

我有3个json文件来构建我的网络应用程序的前端:

  1. config.json获取基于用户权限的所有选项
  2. preferences.json,这是用户首选项
  3. foo.json,这是用户将通过Web应用程序修改的对象
  4. 在我的主控制器中,配置或运行(我不知道什么是最好的方式),我想加载所有这些json并将它们存储在$ rootScope中以构建我的组件的所有实例HTML页面。

    我已经尝试过这样做......

    $http.get('config/config.json').success(function(configResponse) {
      $rootScope.config = configResponse;
    });
    $http.get('preferences/preferences.json').success(function(prefResponse) {
      $rootScope.preferences = configResponse;
    });
    $http.get('foo/foo.json').success(function(fooResponse) {
       $rootScope.foo = fooResponse;
    });
    console.dir($rootScope);
    

    不幸的是,这不起作用。有人在Angular 1.5中有一个想法和最佳方法,这将有助于Angular 2.0的过渡吗?

1 个答案:

答案 0 :(得分:0)

不要使用$ rootScope,建议使用带有配置信息的特定模块,并将每个配置块注册为“常量”。

在您的情况下,服务器端配置稍微复杂一些。看到 Asynchronously Bootstrapping AngularJS Applications with Server-Side Data

(function() {
    var appConfig=angular.module("app.config");
    var initInjector = angular.injector(["ng"]);
    var $http = initInjector.get("$http");

    $http.get('config/config.json').success(function(configResponse) {
       appConfig.constant("config", configResponse);
    });
   $http.get('preferences/preferences.json').success(function(prefsResponse {
       appConfig.constant("preferences", preferencesResponse);
    });


})());

在您的应用模块中添加app.config,然后您可以将config,preferences or foo注入角度控制器,服务......

angular.module("app",["app.config"])