我试图在http get调用中读取环境变量
$http.get('http://' + $location.host() + ':8080/api')
我希望能够读取environmen变量并将其用作上面API调用中的http rest服务器,如下所示
$http.get('environmental_variable ':8080/api')
注意:我不知道环境变量直到运行时因此我不能将值作为常量使用
浏览器中没有环境变量这样的东西.
原文链接:https://www.f2er.com/angularjs/141993.html$location服务始终会获取您当前的URL.我想你的API可能存在于不同的主机上.
通过将配置存储在Angular常量中,可以模拟环境变量.
app.constant('env',{ API_URL: "http://someurl.com:8080/api" });
然后,您可以将此常量注入其他提供程序.
app.controller('MyController',function($http,env) { $http.get(env.API_URL); });
这是best practices with constants上的一篇不错的文章.本文赞成不使用常量,因为能够修改配置而不必重建代码是有用的.
我通常处理这个的方法是将所有实例配置细节移出到config.json文件,然后在我引导我的应用程序时用$http加载它.
例如,您可能有这样的配置文件.
{ apiUrl: "http://someurl.com:8080/api" }
然后加载它的Angular服务.
app.service('Config',function($http) { return function() { return $http.get('config.json'); }; });
然后其他服务可以获得承诺,这将在解析时公开配置.
app.controller('MyController',Config) { Config() .then(function(config) { $http.get(config.apiUrl); }); });