And*_*rew 9 angularjs angular-ui-router
这让我在过去几个小时里疯狂,我仍然无法找到解决方案......
基本上我将状态更改为何404
时解析返回http 404状态代码.我正在改变状态$stateChangeError
.一切正常,除非状态改变后,404
它开始另一个状态改变回原来的状态,从而解决两次.状态本身仍然存在404
,所以它毕竟是有效的,但它仍然会产生$http
不需要的额外请求.但是,如果我使用$state.go('404', null, { location: false })
OR,如果404
状态根本没有定义URL ,它只会像这样工作.
如果我为404
state(/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.profile
et base.profile.details
。
归档时间: |
|
查看次数: |
1600 次 |
最近记录: |