$routeProvider / $locationProvider 不是 AngularJS 路由中的函数
$routeProvider / $locationProvider not a function in AngularJS Routing
我正在尝试在 AngularJS.
中创建所谓的 'SEO-friendly' URL
在我的 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);
但是,这会导致以下错误:
Failed to instantiate module exampleApp due to:
TypeError: $routeProvider.html5Mode is not a function
有人能解决这个问题吗?这意味着内容不会因此而显示在视图中。
编辑:对于任何想知道的人,工作代码是:
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);
}]);
html5mode
方法在 $locationProvider
供应商那里可用。
您应该在配置阶段包含 $locationProvider
以使该依赖项在配置块中可用,然后为 #
免费 URL 启用 html5mode
。
代码
app.config(['$routeProvider', '$locationProvider',
function($routeProvider, $locationProvider) {
//$routerProvider code here
$locationProvider.html5Mode(true);
}]);
此外,您还必须在 index.html
页面上添加 <base href="/"
> 标签
我正在尝试在 AngularJS.
中创建所谓的 'SEO-friendly' URL在我的 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);
但是,这会导致以下错误:
Failed to instantiate module exampleApp due to: TypeError: $routeProvider.html5Mode is not a function
有人能解决这个问题吗?这意味着内容不会因此而显示在视图中。
编辑:对于任何想知道的人,工作代码是:
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);
}]);
html5mode
方法在 $locationProvider
供应商那里可用。
您应该在配置阶段包含 $locationProvider
以使该依赖项在配置块中可用,然后为 #
免费 URL 启用 html5mode
。
代码
app.config(['$routeProvider', '$locationProvider',
function($routeProvider, $locationProvider) {
//$routerProvider code here
$locationProvider.html5Mode(true);
}]);
此外,您还必须在 index.html
页面上添加 <base href="/"
> 标签