Angular routeProvider набор объявленных параметров?

Можно ли разрешить только определенные варианты в routeProvider с помощью angularjs?

Например, если у меня есть:

$routeProvider.when('/:action/view/', {

Могу ли я разрешить только («баскетбол», «бейсбол») в качестве действий, чтобы это было установлено как матч?


person KingKongFrog    schedule 16.06.2015    source источник


Ответы (2)


вы можете использовать атрибут redirectTo вашего маршрута для перенаправления пользователей в случае неразрешенного вызова маршрута:

$routeProvider.when('/:action/view/',{
    redirectTo: function(routeParams, locationPath, locationSearch){
        var allowed = ['baseball','basketball'];        //allowed action param

        if(allowed.indexOf(routeParams.action) != -1){  //route is allowed don't redirect
            return null;
        }
        else{                                           //route is denied redirect to home
            return '/home';
        }
    }
}
person Freezystem    schedule 16.06.2015

Не проверено, но вы можете прослушать $routeChangeStart, который вызывается перед изменением маршрута, использовать аргументы «следующий» и «текущий» маршрут, чтобы выяснить, разрешен ли будущий маршрут. Если нет, выполните $location.path, чтобы вернуть их на текущий маршрут.

person rajasaur    schedule 16.06.2015