首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >html5mode破坏了AngularJS路由

html5mode破坏了AngularJS路由
EN

Stack Overflow用户
提问于 2018-02-09 04:46:20
回答 1查看 770关注 0票数 0

在ngRoute中使用html5Mode时,我遇到了一个问题,这与其他人遇到的相同问题不太一样。下面是我的代码中最相关的部分:

代码语言:javascript
复制
(function () {
  var config = function ($routeProvider, $locationProvider) {
    $routeProvider
      .when('/', {
        templateUrl: 'home/home.view.html',
        controller: 'homeCtrl',
        controllerAs: 'vm'
      })
      .when('/about', {
        templateUrl: 'common/views/genericText.view.html',
        controller: 'aboutCtrl',
        controllerAs: 'vm'
      })
      .when('/location/:locationId', {
        templateUrl: 'locationDetail/locationDetail.view.html',
        controller: 'locationDetailCtrl',
        controllerAs: 'vm'
      })
      .otherwise({redirectTo: '/'});

    /* $locationProvider.html5Mode({
     enabled: true,
     requireBase: false
    }); */
  };

  angular
    .module('loc8r', ['ngRoute', 'ngSanitize'])
    .config(['$routeProvider', '$locationProvider', config]);
})();

这个问题特别出现在/location/:locationId的路由上。在html5Mode打开的情况下,试图加载像http://127.0.0.1:3000/location/5a27ab691c5e0a989c0634da这样的URI将导致空白页面。奇怪的是,Node的日志输出告诉我模板和控制器都在被访问。更奇怪的是,如果我将路由从/location/:locationId改为/:locationId,并加载一个像http://127.0.0.1:3000/5a27ab691c5e0a989c0634da这样的URI,那么页面就会加载。但让/location/:locationId正常工作的唯一方法是禁用html5Mode,然后转到http://127.0.0.1:3000/#!/location/5a27ab691c5e0a989c0634da。但那是丑陋的。在这种情况下,如何才能让html5Mode正常工作?

如果需要,我可以将所有最新的更改推送到GitHub,然后提供完整的代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-09 04:51:08

您是否在index.html文件中设置了base属性?

查看:How to setup AngularJS $locationProvider HTML5 mode for non-root base urls?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48694516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档