Здравствуйте, я новичок в angular, подскажите пожалуйста, как мне инициализировать константы в самом начале работы приложения. Сейчас они иницилизируются в блоке resolve роутера, но это не вариант, придётся для каждого роута писть один и тот же резолв. Так же если конттроллер вложе в другой, то родительский не увидит данных которые резолвит дочерний.
app.config(function($routeProvider) {
$routeProvider.when('/', {
controller: 'AppCtrl',
resolve: {
initConstants: function($rootScope, $q, $location) {
console.log('start resovling');
var deffered = $q.defer();
if ($rootScope.CONSTANTS){
console.log('constants already resolved!!!');
deffered.resolve();
return deffered.promise;
}
// загрузка констант с сервера.
Visualforce.remoting.Manager.invokeAction(
'{!$RemoteAction.MobileController.getConstants}',
function(result, event) {
if (event.status){
var jsonStr = result.replace(/"\;/g, '"');
$rootScope.CONSTANTS = JSON.parse(jsonStr);
deffered.resolve();
console.log('constants resolved!!!');
$location.path('/MyLearning');
} else{
console.error('loadConstants - error!');
console.error(event);
deffered.reject(event);
}
});
return deffered.promise;
}
}
}).otherwise({
redirectTo: '/'
});
});
Хотелость бы как-нибудт инициализировать их в методе run, но как это сделать через promis не знаю