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"
Другие вопросы по тегам