繁体   English   中英

html5mode中断AngularJS路由

[英]html5mode breaks AngularJS routing

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

(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时,尝试加载URI(如http://127.0.0.1:3000/location/5a27ab691c5e0a989c0634da导致空白页。 奇怪的是,我来自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,然后提供完整代码。

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

检查: 如何为非根基本URL设置AngularJS $ locationProvider HTML5模式?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM