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

问题描述:

这是我试图实现的:当用户输入的URL与$stateProvider中配置的状态的任何URL模式都不匹配时,状态应设置为默认状态,例如'notFound'。进入这个状态必须保持URL不变,所以用户有机会纠正它。这就是为什么我不使用$urlRouterProvider.otherwise()如何在AngularJS ui-router模块中指定默认状态

目前,我用以下解决方法工作:在我的主控制器我是否

$state.current.name == '' 

如果是这样的话,我设置'notFound'状态。

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

然而,这似乎有点像一个黑客,因为我认为有是配置module.config()所有这一切的方式,但我不知道怎么办。对此有何想法?

我自己找到了解决方案:可以在URL中使用正则表达式参数。所以,你可以定义一个“包罗万象”的状态作为$stateProvider注册这样的一个状态:

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

如果没有其他网址格式匹配,这种状态将被选中,完整的路径可以通过$stateParams.path访问。

+0

这帮了我很多谢谢,你可以接受你自己的答案btw :) – JMK