角度JS路由参数在路由时约束

Angular JS route param constrain when routing

本文关键字:路由 约束 参数 JS 角度      更新时间:2023-09-26

嗨,考虑我的路由如下所示

when('/:UserType/:LocationID', {
            title: 'Search',
            templateUrl: function(Param){
                switch (Number(Param.UserType)) {
                    case 2:
                        return 'app/Views/Search/tutor-search.html';
                        break;
                    case 3:
                        return 'app/Views/Search/institute-search.html';
                        break;    
                }
            }
        }).
        otherwise({
            redirectTo: '/'
        });
上面有两个路由参数/:

UserType/:LocationID应该只在参数是数字时路由,如果带有字母,它不应该允许路由,我不知道这样做,任何帮助都是可观的。

在 ui 路由器中,您可以使用 url 匹配器:http://angular-ui.github.io/ui-router/site/#/api/ui.router.util.type:UrlMatcher喜欢

'/user/{id:[0-9a-fA-F]{1,8}}'

我不确定内置角度路由器。如果没有,则可以在路由更改事件中添加检查以禁止路由器。

$scope.$on('$locationChangeStart', function(event, next, current) { .. and the check if (stop) event.preventDefault(); });

你看过UI路由器框架吗?它提供Regex Parameters .像这样:

title: 'Search',
// user id of at least one number, location of 2 to 8 numbers
url: '{user:[0-9]{1,*}}/{loc:[0-9]{2,8}}'