Маршрутизация пользовательского интерфейса с корневым состоянием не разрешается до дочернего контроллера состояния

0

Для приложения, над которым я работаю в AngularJS, у меня есть следующая проблема:

  • Перед запуском приложения - я установил 2 функции разрешения для загрузки переводов из остальных/свойств из локального файла.
  • Я добавил две функции разрешения в "корневом" состоянии приложения
  • Я определил "дочерние состояния", которые должны наследовать решение из "корневого состояния",
  • Я замечаю, что пользовательский контроллер функций в дочернем состоянии не выполняется после того, как функции разрешения корневого состояния

Определения государств:

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 порядок предупреждений:

  • alert ('load properties');
  • alert ("данные службы заказов на работу");
  • alert ("локализация нагрузки");

В порядке разрешения - последнее предупреждение должно выполняться в разрешении корневого состояния, а не до разрешения дочернего состояния.

Я что-то пропустил... Заранее спасибо за изучение этой проблемы!

Теги:
angular-ui-router

1 ответ

1
Лучший ответ

В основном, изменив состояние "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.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню