gpt4 book ai didi

javascript - 拒绝 promise Angular ui-router 后的 $state 转换

转载 作者:行者123 更新时间:2023-12-01 14:44:55 25 4
gpt4 key购买 nike

在初始化 Controller 之前,我正在使用 Angular ui-router 并为我的一种状态设置了解析功能。我检索一些数据,循环并匹配 URL stateParam,如果找到匹配项,则将 promise 解析给 Controller 并在 promise 中返回该对象。这一切都很好。

但是,如果没有找到匹配项,我只想通过拒绝 promise 并运行 $state.go('state'); 来重定向到不同的状态。

简单地说:

deferred.reject();
$state.go('state',{params: 'param'});

但这似乎没有任何作用。 Controller 只是挂起,我没有得到任何控制台错误或任何东西。有任何想法吗?

这个问题适用于版本 0.xx,很多东西在版本 1.xx 中发生了变化

最佳答案

ui-router 应该抛出 $stateChangeError如果路由解析被拒绝。您需要注意此事件,并在那里触发您的状态转换。

根据维基:
$stateChangeError - 在转换过程中发生错误时触发。重要的是要注意,如果您的解析函数中有任何错误(javascript 错误、不存在的服务等),它们通常不会抛出。您必须监听此 $stateChangeError 事件以捕获所有错误。

https://github.com/angular-ui/ui-router/wiki#wiki-state-change-events

正如评论中提到的@gustavohenke,放置此处理程序的好地方是您的应用程序的主要.run()。功能。

关于javascript - 拒绝 promise Angular ui-router 后的 $state 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21868219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com