Angular 新路由器从 URL 中删除 /#
Angular New Router remove /# from URL
我正在使用 angular 1.4.6 和新的路由器版本 0.5.3,我想从 url 中删除“/#”。似乎无法在 Internet 上找到有关它的任何信息。
编辑:$locationProvider.html5mode(true);
给出以下错误:
Uncaught Error: [$injector:modulerr] Failed to instantiate module app due to:
TypeError: $locationProvider.html5mode is not a function
$locationProvider.html5Mode(true);
您只能在支持 HTML5 历史 API 的浏览器中从 URL 中删除标签。如您所见here,它在 IE9 中不受支持,因此在那种情况下它将回退到 Hashtags。
话虽如此,为了使您的 URL 在支持的浏览器中更漂亮,您可以使用如下所示的 $locationProvider
配置启用 html5Mode
。
angular.module('myApp', [])
.config(function($locationProvider){
$locationProvider.html5Mode(true);
});
除此之外,您需要为 angular-router 定义应用程序的基础 URL 以识别路由。如果你的URL是
http://localhost:8080/myApp/#showLogin
http://localhost:8080/myApp/#showHomePage
然后您需要使用 <base>
标签定义基础 URL,如下所示
<head>
<base href="/myApp">
</head>
希望对您有所帮助:)
我正在使用 angular 1.4.6 和新的路由器版本 0.5.3,我想从 url 中删除“/#”。似乎无法在 Internet 上找到有关它的任何信息。
编辑:$locationProvider.html5mode(true);
给出以下错误:
Uncaught Error: [$injector:modulerr] Failed to instantiate module app due to:
TypeError: $locationProvider.html5mode is not a function
$locationProvider.html5Mode(true);
您只能在支持 HTML5 历史 API 的浏览器中从 URL 中删除标签。如您所见here,它在 IE9 中不受支持,因此在那种情况下它将回退到 Hashtags。
话虽如此,为了使您的 URL 在支持的浏览器中更漂亮,您可以使用如下所示的 $locationProvider
配置启用 html5Mode
。
angular.module('myApp', [])
.config(function($locationProvider){
$locationProvider.html5Mode(true);
});
除此之外,您需要为 angular-router 定义应用程序的基础 URL 以识别路由。如果你的URL是
http://localhost:8080/myApp/#showLogin
http://localhost:8080/myApp/#showHomePage
然后您需要使用 <base>
标签定义基础 URL,如下所示
<head>
<base href="/myApp">
</head>
希望对您有所帮助:)