我将ngRoute与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
时,尝试加载类似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,然后提供完整代码。
最佳答案
您是否在base
文件中设置了index.html
属性?
检查:How to setup AngularJS $locationProvider HTML5 mode for non-root base urls?
关于javascript - html5mode中断AngularJS路由,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48694516/