Angular $ routeProvider为命名组指定有效值(正则表达式?)

时间:2017-07-11 07:09:07

标签: angularjs route-provider

我的问题是如果第一个路径参数是有效的“排序”值,我应该加载一个控制器,例如。

data()

否则它应该加载我的错误页面。

我的routeProvider条目如下所示:

@media(min-width:768px) {
  #page-content-wrapper {
    padding-left: 250px;
    position: relative;
  }
}

我的问题是无论给出什么值,都会加载控制器

/date
/name

/ asdf应加载错误页面。

我的问题是有没有办法为命名组指定有效值(可能使用正则表达式),或者我必须指定多个routeProvider条目,例如。

$routeProvider.
        when('/:sort', {
            controller: 'myCtrl'
        })
        .otherwise({
            templateUrl: 'error.html'
        });

如果这是唯一的解决方案,请跟进问题:

在我的控制器中,我使用routeParams检索值:sort,非常方便。

如果我不使用命名组而是为每个有效排序值都有$ routeProvider条目,则sort的值将不包含在$ routeParams中。

我是否必须解析路径才能获得正确的排序值,或者是否有更简单的方法?

谢谢。

1 个答案:

答案 0 :(得分:0)

$ routeChangeStart就是你要找的!

只需查看$route的文档,每当路线发生变化时,都会发生此事件。

$rootScope.$on("$routeChangeStart", function (event, next, current) {
  //next is the next route information and current the current route.

 // if regex.dontMatch(next) then redirect else don't do anything
});

其中regex.dontMatch是你的正则表达式函数