AngularJS 1.4.8 $locationProvider.html5Mode не помогает удалить хеш
Я использую AngularJS 1.4.8. Как сказано в руководстве, я создал правила маршрутизации:
alphApp.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
$routeProvider
.when('/', {
templateUrl: 'pages/home.html',
controller: 'mainCtrl'
})
.when('/alphabet', {
templateUrl: 'pages/alphabet.html',
controller: 'alhabetController'
})
.otherwise({
redirectTo: '/'
});
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
}]);
Но когда я нажимаю на ссылку
<a href="#alphabet">
В адресной строке отображается домен /# алфавит, а содержимое остается неизменным, пока я не обновлю страницу. После обновления страницы URL становится доменом / алфавитом с правильным содержанием. Если я удалю эту часть:
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
URL будет выглядеть как домен /#/ алфавит, но содержимое будет меняться правильно. Эту проблему можно решить путем понижения angular до 1.2.25, что вызывает проблему с get-params, так есть ли способ получить симпатичные URL без понижения angular?
1 ответ
Ваш href говорит браузеру перейти на oldpath/# алфавит, oldpath/ алфавит. Вы должны изменить свои hrefs на:
href="/alphabet"