在AngularJS中,有没有办法拦截未在routeProvider中定义的路由更改,因此可以在数据库中查找路由,如果数据库中存在有效匹配,则可以将新路由添加到routeProvider?
我已经读过可以动态添加路由,但是当当前路由不匹配时我需要这样做。
答案 0 :(得分:0)
假设您可以在控制器中执行此操作,您可以按如下方式捕获此事件:
$rootScope.$on("$routeChangeSuccess", function (event, next, current) {
if(!angular.isDefined($route.current.$$route))
addDynamicRoute('using techniques mentioned above');
else
handleOtherStuff();
});
答案 1 :(得分:0)
我会使用$ routeProvider的另一种方法来加载一个预定义的页面(控制器)来处理未定义的路由。
otherwise({
templateUrl: 'addRoute.html',
});
然后,进入此控制器,使用$ location($ location.url())获取请求的当前路由。 如果需要,动态添加此路线:
$route.routes['/new'] = {templateUrl: 'new.html'};
最后,使用以下方法重定向到此路线:
$location.path('/new');
显然,要实现这一点,您需要将$ route和$ location作为依赖项注入控制器。