HTML5MODE打破了AngularJS路由



我在将 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会导致空白页。奇怪的是,我从节点发出的记录输出告诉我,模板和控制器都可以访问。更奇怪的是,如果我将路由从/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 $ location-provider HTML5模式?

相关内容

  • 没有找到相关文章

最新更新