$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
страница