У меня проблема с моим приложением в режиме 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
Есть идеи?
Я нашел это! При включении 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