目前我正在尝试将我的ui-router从简单的Hashbang Prefix #!
移到#
但是如果我将locationProvider更改为它:
$locationProvider.hashPrefix('!');
如果我尝试通过旧网址访问它,它将始终返回404。
因此,如果有人有#/customer/list
的超链接,它会重定向到404或默认页面,有没有办法将其重定向到#!/customer/list
? (我实际上有很多路线,所以它应尽可能自动化。)
答案 0 :(得分:0)
您可以使用$stateChangeStart
执行此操作,如下所示:
$rootScope.$on('$stateChangeStart', function(e, toState, toParams, fromState, fromParams) {
if (/\#(?!\!)/.test(toState)) {
e.preventDefault();
toState.replace("#","#!");
$state.go(toState);
} else {
angular.noop;
}
});
编辑:
没试过。但是,希望它有效:
$transitions.onStart({}, function(a) {
var toState = a.$to().url.pattern;
if (/\#(?!\!)/.test(toState)) {
toState.replace("#", "#!");
$state.go(toState)
} else {
angular.noop;
}
});
一切顺利。