2014-08-30 122 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; 
 
    } 
 
}, 
 
...