如何在AngularJS ui-router模块中指定默认状态

时间:2014-02-17 10:26:28

标签: angularjs angular-ui-router

这就是我要实现的目标:当用户输入的网址与$stateProvider中配置的状态的任何网址模式不匹配时,状态应设置为默认状态以实例'notFound'命名的。进入此状态必须保持URL不变,以便用户有机会更正它。这就是为什么我没有使用$urlRouterProvider.otherwise()

目前我正在使用以下解决方法:在我的主控制器中,我检查是否

$state.current.name == ''

如果是这种情况,我设置'notFound'状态。

$state.go('notFound', {}, { location: false });

然而,它似乎有点像黑客,因为我认为有一种方法可以在module.config()中配置所有这些,但我不知道如何。关于这个的任何想法?

1 个答案:

答案 0 :(得分:3)

我自己找到了解决方案:可以在URL中使用正则表达式来表示参数。因此,您可以将{catch-all'状态定义为$stateProvider中注册的最后一个状态,如下所示:

$stateProvider.state('notFound', {
    url: '{path:.*}',
    templateUrl: '/notFound.html'
});

如果没有其他网址格式匹配,则会选择此状态,并可通过$stateParams.path访问完整路径。