如何在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
访问。
这帮了我很多谢谢,你可以接受你自己的答案btw :) – JMK