Вложенные представления Angular-UI в режиме HTML5 не получают 404 для файла шаблона

0

У меня проблема с моим приложением в режиме HTML5 и вложенным URL, позвольте мне объяснить.

Это пример файла маршрутизации:

angular.module('widgets').config(['$stateProvider', 
    function($stateProvider) {
        $stateProvider.
        state('widgets', {
            url: '/widgets',
            abstract: true
        }).
        state('widgets.create', {
            url: '/create',
            views: {
                'content@': {
                    templateUrl: 'modules/widgets/views/widgets.create.client.view.html',
                }
            }
        });
    }
]);

Это работает до тех пор, пока я не выключу режим HTML5:

$locationProvider.hashPrefix('!');

Когда я включаю режим HTML5 с:

$locationProvider.html5Mode(true).hashPrefix('!');

Бывает, что как только я попробую вложенные URL /widgets/create я получаю ошибку 404, не найденную для файла templateUrl, потому что она префикс его /widgets/ вместо этого получая это:

http://127.0.0.1/modules/widgets/views/widgets.create.client.view.html <- 200 OK HTML5 OFF

Вместо этого попытайтесь получить:

http://127.0.0.1/ widgets/modules/widgets/views/widgets.create.client.view.html <- 404 Не найдено HTML5 ON

Есть идеи?

Теги:
angular-ui
angularjs-routing

1 ответ

1

Я нашел это! При включении HTML5mode вам нужно добавить этот тег в head вашего основного документа:

<head>
   <base href="/" />
   ...
</head>

Вот объяснение: https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#issue-my-assets-and-templates-are-not-loading

Ещё вопросы

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