Не удается перейти к отложенной инициализации дочерних маршрутов при использовании маршрутизатора пользовательского интерфейса - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть родительское состояние, контроллер и маршрут которого определены в App.js и лениво загружены:

$stateProvider.state({
    name: 'Parent',
    url: '/Parent',
    templateUrl: 'Parent.html',
    controller: "ParentController",
    resolve: {
        load: ['$ocLazyLoad', function ($ocLazyLoad) {
            return $ocLazyLoad.load([
                "/SomeService.js",
                "/ParentController.js"]);
        }]
    }
});

Также в App.js я сохраняю ссылку на провайдера состояния

AngularApp.StateProvider = $stateProvider.state;

и поставщик маршрута:

AngularApp.AppController = $controllerProvider.register;

В противном случае контроллеры и состояния появляются неопределенными позже

Затем в ленивом загруженном родительском контроллере я определяю дочерние состояния и родительский контроллер:

AngularApp.StateProvider({
    name: 'Parent.Child',
    url: '/{parameter}'
});



AngularApp.AppController('ParentController', ['$scope', function ($scope) {
}]);

Это прекрасно работает и работает непосредственно с URL: localhost: 8080 / Parent

Загружается нормально и снова загружается при обновлении страницы.Переход к дочернему состоянию после того, как родительское состояние уже было переведено на

localhost:8080/Parent/ChildParameter

Также отлично работает.

Проблема возникает при попытке перейти непосредственно к дочернему состоянию (например, изновая вкладка или путем обновления страницы в дочернем состоянии) Вместо этого происходит сбой, и вместо него загружается маршрут .otherwise ()

Когда это происходит, маршрутизатор не может подтвердить, что он должен загрузить родительское состояние.Ленивый загруженный контроллер и затем продолжение в том месте, где определено дочернее состояние.

Я хотел бы избежать определения дочерних состояний в загруженных вперед js-файлах, чтобы сохранить чистоту кода, есть ли способ обойти эту проблему?

...