Для приложения, над которым я работаю в AngularJS, у меня есть следующая проблема:
Определения государств:
app.config(function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/app/start');
$stateProvider
// load dependencies on state
.state('app', {
url: "/app",
abstract: true,
template: "<div class='page' ui-view></div>",
resolve: {
// load properties
loadProperties: function(properties){
alert('load properties');
return properties.initProperties();
},
// load labels
loadLocalization: function(localize, loadProperties){
alert('load localization');
return localize.initLocalizedResources();
}
}
})
// dashboard : general index
.state('app.dashboard', {
url: "/dashboard",
templateUrl: "partials/dashboard/dashboard.html",
controller: "dashboardController",
resolve:{
// load workorders
loadData: function(wkorderService){
alert('load work orders service data');
return wkorderService.getData(null, null);
}
}
})
});
Я добавил предупреждения для проверки последовательности, и я замечаю, что при доступе к app.dashboard
через URL /dashboard
порядок предупреждений:
В порядке разрешения - последнее предупреждение должно выполняться в разрешении корневого состояния, а не до разрешения дочернего состояния.
Я что-то пропустил... Заранее спасибо за изучение этой проблемы!
В основном, изменив состояние "app.dashboard" на следующую исправленную мою проблему:
// dashboard : general index
.state('app.dashboard', {
url: "/dashboard",
templateUrl: "partials/dashboard/dashboard.html",
controller: "dashboardController",
resolve:{
// load workorders
loadData: function(wkorderService,loadLocalization){
alert('load work orders service data');
return wkorderService.getData(null, null);
}
}
})
Я думал, что решение "корневого" состояния было автоматически вызвано до разрешения дочернего состояния. Полагаю, что это не так, поэтому специально добавление разрешения loadLocalization
в конструкторе метода loadData.