angularjs – Angular ui-router解析两次

前端之家收集整理的这篇文章主要介绍了angularjs – Angular ui-router解析两次前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这让我在过去几个小时里疯狂了,我仍然无法找到解决方案……

基本上我在解析返回http 404状态代码时将状态更改为404.我正在更改$stateChangeError事件中的状态.一切正常,除非状态更改为404后,它会启动另一个状态更改回原来的状态,从而解析两次.状态本身仍然在404,所以它毕竟有效,但它仍然会产生额外的$http请求,这些请求是不需要的.但是,如果我使用$state.go(‘404’,null,{location:false})或者404状态根本没有定义URL,它只能这样工作.

如果我为404状态(/ 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');

默认网址是/ profile / x / details.当ui-router看到
该url,它将尝试加载状态层次结构:base,base.profile和base.profile.details.正如您所说,由于您捕获404错误并将请求重定向到其他位置,因此不会加载最后一个.

问题是您仍然位于/ profile / x / details.所以在stateChangeError中,当你执行$state.go(‘404’,{location:false});时,ui-router将检查url.

由于它没有在404中设置,他将采用他拥有的那个:/ profile / x / details.这就是他解决相同状态层次结构的原因:base,base.profile et base.profile.details.

原文链接:https://www.f2er.com/angularjs/141865.html

猜你在找的Angularjs相关文章