【问题标题】:html5mode breaks AngularJS routinghtml5mode 打破 AngularJS 路由
【发布时间】:2018-02-08 20:46:20
【问题描述】:

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

(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,然后提供完整代码。

【问题讨论】:

    标签: javascript angularjs mean-stack angularjs-ng-route


    【解决方案1】:

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

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

    【讨论】:

    • 修复了它。很奇怪。
    • 这需要几分钟。
    猜你喜欢
    • 2015-07-31
    • 2015-02-25
    • 2014-11-21
    • 1970-01-01
    • 2015-08-22
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    相关资源
    最近更新 更多