AngularJS路由-自定义验证,然后检查其他路由

AngularJS路由-自定义验证,然后检查其他路由,angularjs,angularjs-routing,Angularjs,Angularjs Routing,假设我有一个类似“/:department”的路由,其中department只能是书籍、音乐等。首先,在选择控制器/模板之前,我如何执行此约束,然后如果它无效,我如何让它与表中的其他路由进行测试?否则,例如,/about将无效 我理解,选择合适的控制器和模板的另外两个组成部分只是为从$routeParams构建的返回路径使用函数的问题。为什么不能这样做: 假设您的路线如下所示: .when('get/:department, { templateUrl: 'Your template ur

假设我有一个类似“/:department”的路由,其中department只能是书籍、音乐等。首先,在选择控制器/模板之前,我如何执行此约束,然后如果它无效,我如何让它与表中的其他路由进行测试?否则,例如,/about将无效


我理解,选择合适的控制器和模板的另外两个组成部分只是为从$routeParams构建的返回路径使用函数的问题。

为什么不能这样做:

假设您的路线如下所示:

.when('get/:department, {
   templateUrl: 'Your template url',
   controller: 'controller'
});
在控制器中:

app.controller('controller', function ($location, $routeParams){
    if($routeParams.department!=='books' || $routeParams.department!=='music' || .....) {
       $location.path('invalid route');
    } else {
   // Your controller body
    }
});

我考虑过这一点,但我正在设置一个控制器和模板来处理重定向,这似乎有点不太妥当。