基于角度路由参数防止路径变化

时间:2014-08-30 01:58:30

标签: javascript angularjs

我已经为此搜索了所有内容。我基本上希望能够读取路由参数集合并在缺少某个参数时取消路由。在$ 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。我虽然使用了角度路由段。

1 个答案:

答案 0 :(得分:0)

有点老问题,但我刚刚经历了同样的情况,这就是我的解决方法:



...
,onEnter: function($state, $stateParams) {
   if ($stateParams.id=='') { //or whatever constraint
     $state.go(<any other route>);
     return;
   }
 },
... 
&#13;
&#13;
&#13;