当没有路线匹配时捕获AngularJS中的路线变化

时间:2015-04-20 20:18:41

标签: angularjs

在AngularJS中,有没有办法拦截未在routeProvider中定义的路由更改,因此可以在数据库中查找路由,如果数据库中存在有效匹配,则可以将新路由添加到routeProvider?

我已经读过可以动态添加路由,但是当当前路由不匹配时我需要这样做。

2 个答案:

答案 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作为依赖项注入控制器。