And*_*rew 9 angularjs angular-ui-router
这让我在过去几个小时里疯狂,我仍然无法找到解决方案......
基本上我将状态更改为何404时解析返回http 404状态代码.我正在改变状态$stateChangeError.一切正常,除非状态改变后,404它开始另一个状态改变回原来的状态,从而解决两次.状态本身仍然存在404,所以它毕竟是有效的,但它仍然会产生$http不需要的额外请求.但是,如果我使用$state.go('404', null, { location: false })OR,如果404状态根本没有定义URL ,它只会像这样工作.
如果我为404state(/404)定义了一个url ,那么一切正常.
这是2支钢笔,展示了这个问题:
失败的一个:http://codepen.io/cprfnaporf/pen/RaqmQN(调试模式,检查控制台:http://s.codepen.io/cprfnaporf/debug/RaqmQN/)
工作原理:http://codepen.io/cprfnaporf/pen/MyzdVQ(调试模式,检查控制台:http://s.codepen.io/cprfnaporf/debug/MyzdVQ/)
知道如何解决这个问题吗?我真的没有想法.
谢谢!
对我来说,你已经找到了解决方案。事实上,正如您的代码中所述:
$urlRouterProvider.when('/', '/profile/x/details');
Run Code Online (Sandbox Code Playgroud)
默认网址是/profile/x/details. 当ui-router看到该 url 时,它将尝试加载状态层次结构:base,base.profile等base.profile.details。正如你所说,最后一个不会被加载,因为你捕获了 404 错误并将请求重定向到其他地方。
问题是您仍然位于/profile/x/details。因此,在 中stateChangeError,当您执行 时$state.go('404', null, { location: false });, ui-router将检查 url。
由于 中没有设置404,他将采用他拥有的:/profile/x/details。这就是为什么他解决了相同的状态层次结构:base,base.profileet base.profile.details。
| 归档时间: |
|
| 查看次数: |
1600 次 |
| 最近记录: |