我正在使用ui-router
作为Angular(1.4)WebApp。一切都很好,但URL重定向规则。我知道当URL未知时我可以定义一组重定向规则。但我想让它更先进。我想将请求重定向到最近的父位置。
这是一个简化的案例:
/ // --> index.html
/apps/app/:id // --> app.html
/apps/app/:id/status // --> app.status.html
/unknown/path // --> no path segment is registered at all, so redirect to index.html
MY WISH:
/apps/app/:id/unknown // --> app.html (not redirect to index.html)
以下是相应的代码:
.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('index', {
url: '/',
templateUrl: 'index.html'
}).
.state('app', {
url: '/apps/app/:id',
templateUrl: 'app.html'
})
.state('app.status', {
url: '/apps/app/:id/status',
templateUrl: 'app.status.html'
});
$urlRouterProvider.otherwise('/');
}])
在实际项目中,有20多个州规则。但重定向到index.html不是用户友好的。我正在寻找一种将页面重定向到最近页面的智能方法。
现在我有了一个解决方案。请注意,_.initial
来自underscorejs。
$urlRouterProvider
.otherwise(function($injector, $location) {
var parentUrl = _.initial($location.path().split('/')).join('/');
$location.path(parentUrl);
});
答案 0 :(得分:1)
您可以通过以下方式处理更复杂的重定向:
$urlRouterProvider.otherwise(function($injector, $location){
// handle each case here
});