Angular ui-router: добавление templateUrl с нарушением маршрутизации

0

У меня возникла проблема, когда после добавления templateUrl в дочернее состояние ui-router приложение больше не будет выполнять маршрутизацию в состояние. Он отлично работает, когда он просто шаблон.

app.js:

app.config(['$stateProvider', '$locationProvider', '$urlMatcherFactoryProvider', '$urlRouterProvider',
    function ($stateProvider, $locationProvider, $urlMatcherFactoryProvider, $urlRouterProvider) {

        $urlMatcherFactoryProvider.caseInsensitive(true);
        $urlMatcherFactoryProvider.strictMode(false);

        $urlRouterProvider.otherwise('/page-not-found');

        $stateProvider
                .state('dashboard', {
                    url: '/',
                    views: {
                        'header': {
                            template: 'header'
                        },
                        'nav': {
                            template: 'nav'
                        },
                        main: {
                            template: 'You are on the homepage'
                        }
                    }
                });

        $locationProvider.html5Mode(true);
    }]);

app.run(['$rootScope', 'userService', '$state', function ($rootScope, user, $state) {

    $rootScope.$on("$stateChangeError", console.log.bind(console));

    if (!user.exists) {
        $state.go('user.reg');
    }
}]);

User.states.js:

.config(['$stateProvider', function ($stateProvider) {

    $stateProvider
            .state('user', {
                url: '/users',
                abstract: true,
                views: {
                    'header': {},
                    'nav': {},
                    'main': {
                        template: '<ui-view/>'
                    }
                }
            })
            .state('user.reg', {
                url: '/register',
                //template: 'This will show fine',
                templateUrl: '/app/Users/User.login.html' // this will break
            });

}]);

ОБНОВИТЬ

Если я добавлю ui-sref="user.reg" на мои начальные страницы, я смогу перейти к ui-sref="user.reg" состояния/страницы, с templateUrl ui-sref="user.reg" и template. Так что это просто проблема, когда я пытаюсь использовать state.go('user.reg');

Это означает, что работа вокруг используется провайдером $location для изменения пути. Имеет такой же эффект, но кажется довольно неправильным

  • 0
    Когда он ломается, вы видите ошибки консоли? это 404 для пути шаблона?
  • 0
    @ Starscream1984 Нет ошибок вообще, файл присутствует и его нет 404. Он даже не перенаправляется в состояние user.register, просто остается в состоянии индекса
Показать ещё 3 комментария
Теги:
angular-ui-router

1 ответ

0

Проблема связана с вашими относительными путями.

Посмотрите на этот код:

$locationProvider.html5Mode(true);

У вас включен режим html5, и для этого вам необходимо установить базовый номер ссылки в html, который, вероятно, выглядит следующим образом:

<base href="/">

Вероятно, ваша проблема связана с тем, что маршрут для вашего шаблона не является "yoursite.com/app/Users/User.login.html".

См. Этот Plunker для рабочей версии вашего кода. Затем зайдите в html-код и раскомментируйте базовый тег и обратите внимание, что он сломается.

  • 0
    Шаблон находится в правильном месте, так что это не проблема

Ещё вопросы

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