$routeProvider / $locationProvider не является функцией в AngularJS Routing

Я пытаюсь создать так называемые "SEO-дружественные" URL-адреса в AngularJS.

В моем script.js для маршрутизации у меня есть:

app.config(['$routeProvider',
function($routeProvider) {
    $routeProvider.html5Mode(true);
    when('/blog', {
        templateUrl: 'blog.html',
        controller: 'BlogController'
    }).
    when('/page/ideas', {
        templateUrl: 'ideas.html',
        controller: 'IdeasController'
    }).
    otherwise({
        templateUrl: 'home.html'
    });
}]);

app.controller("BlogController", function($scope) {
    $scope.title = 'Blog';
});

app.controller("IdeasController", function($scope) {
    $scope.title = 'Ideas';
});

Чтобы удалить # из URL, я включаю режим html5 с помощью:

$routeProvider.html5Mode(true);

однако это приводит к следующей ошибке:

Не удалось создать экземпляр модуля exampleApp из-за: TypeError: $routeProvider.html5Mode не является функцией

У кого-нибудь есть решение этой проблемы? Это означает, что контент не будет отображаться из представлений из-за этого.

Изменить: для всех, кто интересуется, рабочий код:

app.config(['$routeProvider', '$locationProvider',
    function($routeProvider, $locationProvider) {
        $routeProvider.
        when('/blog', {
            templateUrl: 'blog.html',
            controller: 'BlogController'
        }).
        when('/page/ideas', {
            templateUrl: 'ideas.html',
            controller: 'IdeasController'
        }).
        otherwise({
            templateUrl: 'home.html'
        });
        $locationProvider.html5Mode(true);
    }]);

1 ответ

Решение

html5mode метод доступен там $locationProvider поставщик.

Вы должны включить $locationProvider на этапе конфигурации, чтобы сделать эту зависимость доступной в блоке конфигурации и затем включить html5mode за # бесплатный URL.

Код

app.config(['$routeProvider', '$locationProvider',
function($routeProvider, $locationProvider) {

   //$routerProvider code here

   $locationProvider.html5Mode(true);

}]);

Дополнительно вы должны добавить <base href="/"> тег на index.html страница

Другие вопросы по тегам