我正在学习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