2014-08-30 84 views
0

我已经遍及此地搜索了。我基本上希望能够读取路由参数集合,并在缺少某个参数时取消路由。在$ routeChangeStart中使用预防默认值不起作用。它在$ 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

有点老问题,但我刚刚经历了同样的情况过去了,这里是我如何处理:

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