我已经构建了一个应用程序,大部分一切都按预期工作,除了我有这三种状态,当我通过重新加载 url 刷新页面时,它会导致页面末尾出现尾部斜杠,导致我的 otherwise('/404') 触发。
这种情况在整个平台的任何其他地方都不会发生。奇怪的是,如果我更改其中一个有问题的州的州 URL,问题就解决了。
有问题的三个状态 url 是 market
、refer-business
和 invite-friends
。这些都是名为 root
的 shell View 的 subview 。我完全不知道是什么导致了这个问题。
我还意识到,如果我将 $urlRouterProvider.otherwise('/404');
从我的主要模块配置中移除,问题也会消失。
这里有两条行不通的路线。
市场.routes.js
function marketRoutes($stateProvider) {
$stateProvider.state('market', {
parent: 'root',
url: '/market?category', // If I change this to /blahblah, it works perfects
views: {
"@root": {
templateUrl: '/market/market.html',
controller: 'MarketController',
controllerAs: 'MarketCtrl'
}
},
resolve: {
Categories: ['MarketService', function (MarketService) {
return MarketService.getCategories();
}],
Products: ['MarketService', '$stateParams', function (MarketService, $stateParams) {
// By default the market should open on `deals of the moment` category
return MarketService.getProducts(0, 9, 1, $stateParams.category || 4);
}]
},
data: {
title: 'Market'
}
});
}
refer-business.routes.js
function ReferBusinessRoutes($stateProvider) {
$stateProvider.state('refer-business', {
parent: 'root',
url: "/refer",
templateUrl: "/refer-business/refer-business.html",
controller: "ReferBusinessController",
controllerAs: "rbCtrl",
onEnter: function () {
this.data.title = "Refer a business";
},
data: {
title: 'Refer a business'
},
authenticate: true
});
}
过去 3 天我一直在研究这个问题,但一无所获。希望这里有人遇到过这个问题,或者有一些关于如何进一步调试它的提示。
最佳答案
您可能会在这里找到答案:Handling trailing slashes in angularUI router
解释了如何像往常一样用尾部斜线来判断 Angular 处理。
也可能是服务器端模板文件的权限问题
关于angularjs - ui-router 在路由末尾添加尾部斜杠导致 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35161990/