如果我点击网址说
www.xyz.com/home#route-1
AngularJS会自动将其重定向到
www.xyz.com/home#/route-1
即 - 它为路由添加/
(正斜杠)
为什么会这样,我怎么能停止这样做呢?
更新 我真正想要的是,角度不应该附加正斜杠,也不能删除哈希符号。
答案 0 :(得分:6)
@Tushar我不确定你是否已经找到了一个解决方案,但我也遇到了你的情况,谷歌搜索没有运气。最后我发现这是一个相当简单的修复,我补充说: -
angular.config(function($locationProvider) {
$locationProvider.html5Mode({
enabled: true,
requireBase: false,
rewriteLinks: false
});
})
它只是停止将正斜杠(/)前缀附加到我的哈希锚点。一切都仍然是我们熟悉的(没有用哈希替换URL或什么不是)。
答案 1 :(得分:0)
如果您想在AngularJS应用中使用锚点,则应使用$anchorScroll
服务。
"controller"
function ScrollCtrl($scope, $location, $anchorScroll) {
$scope.gotoBottom = function (){
// set the location.hash to the id of
// the element you wish to scroll to.
$location.hash('bottom');
// call $anchorScroll()
$anchorScroll();
}
}
"html"
<div id="scrollArea" ng-controller="ScrollCtrl">
<a ng-click="gotoBottom()">Go to bottom</a>
<a id="bottom"></a> You're at the bottom!
</div>
You could see this working in AngularJS documentation.
如果你想美化AngularJS网址,你可以启用html5Mode:
.config(function($routeProvider, $locationProvider) {
$routeProvider
.when('/', {
templateUrl : 'partials/home.html',
controller : mainController
})
.when('/about', {
templateUrl : 'partials/about.html',
controller : mainController
})
.when('/contact', {
templateUrl : 'partials/contact.html',
controller : mainController
});
// use the HTML5 History API
$locationProvider.html5Mode(true);
});