[英]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.