这就是我要实现的目标:当用户输入的网址与$stateProvider
中配置的状态的任何网址模式不匹配时,状态应设置为默认状态以实例'notFound'
命名的。进入此状态必须保持URL不变,以便用户有机会更正它。这就是为什么我没有使用$urlRouterProvider.otherwise()
。
目前我正在使用以下解决方法:在我的主控制器中,我检查是否
$state.current.name == ''
如果是这种情况,我设置'notFound'
状态。
$state.go('notFound', {}, { location: false });
然而,它似乎有点像黑客,因为我认为有一种方法可以在module.config()中配置所有这些,但我不知道如何。关于这个的任何想法?
答案 0 :(得分:3)
我自己找到了解决方案:可以在URL中使用正则表达式来表示参数。因此,您可以将{catch-all'状态定义为$stateProvider
中注册的最后一个状态,如下所示:
$stateProvider.state('notFound', {
url: '{path:.*}',
templateUrl: '/notFound.html'
});
如果没有其他网址格式匹配,则会选择此状态,并可通过$stateParams.path
访问完整路径。