我正在学习 AngularJS,但有一件事让我很恼火。
我用来$routeProvider为我的应用程序声明路由规则:
$routeProvider
$routeProvider.when('/test', { controller: TestCtrl, templateUrl: 'views/test.html' }) .otherwise({ redirectTo: '/test' });
但是当我在浏览器中导航到我的应用程序时,我看到app/#/test的不是app/test.
app/#/test
app/test
所以我的问题是为什么 AngularJS 会将此哈希添加#到 url?有没有可能避免它?
#
事实上,对于非 HTML5 浏览器,您需要 #(井号标签)。
否则,他们只会在提到的 href 处对服务器进行 HTTP 调用。# 是一个旧的浏览器短路,它不会触发请求,它允许许多 js 框架在此之上构建自己的客户端重新路由。
如果可用,您可以使用$locationProvider.html5Mode(true)告诉 Angular 使用 HTML5 策略。
$locationProvider.html5Mode(true)
这里是支持 HTML5 策略的浏览器列表:http: //caniuse.com/#feat=history