如何在常量的decleration中使用$ http

时间:2016-11-01 02:52:09

标签: angularjs

解释问题: 因此,在当前的应用程序中,我们有几个不断的配置声明,可以将应用程序连接到生产或开发环境,每当我们想要切换时,我们就会对其进行评论,这对我来说似乎不是理想的场景。所以我想要的是拥有一个包含值的配置外部json文件,并将该文件与更改的代码分开,并从中获取值到我的常量中。

实际问题: 在这段代码中:

application.constant('servicesConfig', (function() {
 var con = 'appdev';
 //var con = 'appprod';
 return {
   host: con+'.appdomain.com'
 }
}

正如您所看到的,我必须修改' con'手动变量以便在dev和prod环境之间切换,相反,我想做以下事情:

application.constant('servicesConfig', (function() {
 var deferred = $q.defer();
 var configLocation = 'config/server.json';
 var configurations = $http.get(configLocation)
 return {
   host: configurations.con+'.appdomain.com'
 }
}

我的问题是如何才能注入$ http或其他角度服务?

1 个答案:

答案 0 :(得分:-1)

您可以在从服务器接收数据后手动引导角度。

jsfiddle上的示例:



var app = angular.module("myApp", []);
app.controller("myController", function($scope, servicesConfig) {
  console.log(servicesConfig);
  $scope.model = servicesConfig.host;
  $scope.reset = function() {
    $scope.model = '';
  };
});

angular.element(document).ready(function() {
  //Simulate AJAX call to server
  setTimeout(function() {
    app.constant('servicesConfig', {
      host: "appdev"
    });
    angular.bootstrap(document, ['myApp']);
  }, 2000);

});

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-cloak>
  <div ng-controller="myController">
    <input type="text" ng-model="model" /> {{model}}
    <button ng-click="reset()">Reset</button>
  </div>
</div>
&#13;
&#13;
&#13;