繁体   English   中英

在Angular中将环境变量设置为常量

[英]Setting environment variables as constants in Angular

我的服务器上有一组环境变量,我通过一个简单的API调用得到:

angular.module('app')
  .factory('serverService', ['$resource',
    function($resource) {
      var base = '/api/server/';
      return $resource(base, {}, {
        getConfiguration: {method: 'GET', url: base + 'configuration'}
      });
    }]);

我在几个控制器中调用它:

var getConfiguration = function() {
  serverService.getConfiguration().$promise.then(function(config) {
    vm.config = config;
  });
};

我现在需要在我的其他工厂中访问环境变量。 我知道我可以注入serverService并在该工厂内再次进行此调用,但这似乎是一个糟糕的选择。

由于我的配置永远不会改变(配置仅因环境[dev,staging,prod]而不同))当我的应用加载并将结果对象设置为常量时,我​​应该进行一次API调用吗? 如果是这样,我该怎么做呢?

我假设这个变量是静态的,我会让service方法返回promise,而不是执行一个新的查询。 服务是单身,所以它应该只进行一次查询。 在这一点上,我将serverService重命名为更合适的东西,比如ConfigurationService,它会“感觉”更好地注入到处。

angular.module('app')
  .factory('serverService', ['$http',
    function($resource) {
      var base = '/api/server/';
      //Get data and peel off http request data
      var configPromise = $http.get(base + 'configuration').then(function(response){return response.data});
      return {
              getConfiguration: function(){
                return configPromise
              }
            };
        }
    }]);

-

var getConfiguration = function() {
  serverService.getConfiguration().then(function(config) {
    vm.config = config;
  });
};

选项2:

如果您可以访问常量服务器端并在生命周期中将其注入,则可以使用app.constant 这是一个更好的解决方案,因为在您的应用程序引导程序中引入另一个AJAX调用只会减慢页面加载速度。 这种“往返”自举循环可以真正开始加起来。

app.constant('config', ${configVar})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM