DONT使用此代碼
這是非常棘手的 ,我從來沒有把這個代碼在我的應用程序^^ 我發現的唯一方法是:
'use strict';
angular.module('app', [])
.config(function() {
})
.run(function($rootScope,$timeout,Myconfig){
$rootScope.config = {};
Myconfig.get().then(function(data){
$rootScope.config = data;
});
})
.factory('Myconfig', function ($http,$q) {
return {
get : function() {
var deferred = $q.defer();
$http.get('config.json')
.success(function (response) {
deferred.resolve(response);
})
.error(function(data, status, headers, config) {
deferred.reject([]);
});
return deferred.promise;
}
}
})
.controller('MainCtrl',function($scope){
$scope.$watch('config',function(){
console.log($scope.config);
});
});
如果你在眼睛上的您可以實現的控制檯 您不能在prod中使用此代碼,至少我不會使用 找到任何使用承諾從服務器檢索配置 的配置。
UPDATE 我想這是你的服務器,以便 寫入服務器端配置JS 像
var config = {prop:1};
在您 頁面,不是簡單地做
app.constant('CONFIG',config)
UPDATE
僞代碼
唯一明智的事情,我想:
$routeProvider.when('/', {
controller: 'MyCtrl',
resolve: {
config: function(rootService) {
return rootService.getApplicationConfig()
}
}
})
app.controller('MyCtrl', function ($scope,MyService,config) {
MyService.set(config);
});
app.controller('MyCtrl', function ($scope,MyService) {
MyService.get();
});
把你的rootService放在一個不在config中的工廠/服務/提供者。順便說一句,我不會使用$ rootScope,但$窗口和所有我會使用常數/值的應用程序配置依賴於承諾的配置它不是要走的方式imo – Whisher
感謝您的答覆!你能發佈你的代碼嗎? – ivanproskuryakov
我更新了我的回覆 – Whisher