我已经为此搜索了所有内容。我基本上希望能够读取路由参数集合并在缺少某个参数时取消路由。在$ routeChangeStart中使用prevent default不起作用。它适用于$ locationChangeStart,尽管此回调不提供路由参数集合。
有没有办法可以检查路由参数,如果缺少路线参数取消路线?
$rootScope.$on('$locationChangeStart', function (event, next, current) {
// no route parameters... booo
});
$rootScope.$on('$routeChangeStart', function (event, next) {
if (!($.isNumeric(next.params.siteId) && +next.params.siteId)) {
event.preventDefault(); // this doesn't work
$location.url('home');
}
});
我在其他帖子中看到过一些黑客攻击,但它们似乎都特别针对ngRoute。我虽然使用了角度路由段。
答案 0 :(得分:0)
有点老问题,但我刚刚经历了同样的情况,这就是我的解决方法:
...
,onEnter: function($state, $stateParams) {
if ($stateParams.id=='') { //or whatever constraint
$state.go(<any other route>);
return;
}
},
...
&#13;