代码之家  ›  专栏  ›  技术社区  ›  readyready15728

html5mode中断AngularJS路由

  •  0
  • readyready15728  · 技术社区  · 7 年前

    我对使用 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 . 具有 HTML5模式 在上,尝试加载URI,如 http://127.0.0.1:3000/location/5a27ab691c5e0a989c0634da 结果显示空白页。奇怪的是,节点的日志输出告诉我模板和控制器都在被访问。更奇怪的是,如果我从 /位置/:locationId 只是 /:locationId 并加载URI,如 http://127.0.0.1:3000/5a27ab691c5e0a989c0634da ,则页面将加载。但唯一的办法 /位置/:locationId 工作就是离开 HTML5模式 禁用,然后转到 http://127.0.0.1:3000/#!/location/5a27ab691c5e0a989c0634da . 但这很难看。我怎样才能 HTML5模式 在这种情况下工作?

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

    1 回复  |  直到 7 年前
        1
  •  2
  •   kam    7 年前

    你准备好了吗 base 中的属性 index.html 文件

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