解释问题: 因此,在当前的应用程序中,我们有几个不断的配置声明,可以将应用程序连接到生产或开发环境,每当我们想要切换时,我们就会对其进行评论,这对我来说似乎不是理想的场景。所以我想要的是拥有一个包含值的配置外部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或其他角度服务?
答案 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;