Angularjs自动前缀为正斜杠

时间:2014-05-21 13:42:09

标签: javascript angularjs redirect

如果我点击网址说

www.xyz.com/home#route-1

AngularJS会自动将其重定向到

www.xyz.com/home#/route-1

即 - 它为路由添加/(正斜杠)

作为前缀

为什么会这样,我怎么能停止这样做呢?

更新 我真正想要的是,角度不应该附加正斜杠,也不能删除哈希符号。

2 个答案:

答案 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);
});

You could see more here