Ember.js: 带有动态段的路由器 `transition.retry` 和 `refreshModel` queryParams 导致意外错误

创建于 2018-09-19  ·  3评论  ·  资料来源: emberjs/ember.js

似乎与 #10945 有关。

我的用例是:当用户尝试使用过期的令牌进行导航(通过让窗口打开足够长的时间)时,API 调用将因未经授权的错误而失败。 我们在应用程序的错误操作中添加了一些逻辑来捕获此类错误,重新验证用户并在验证后重试转换。 问题是,当我尝试transition.retry()到带有动态段和查询参数的路由refreshModel ,它将失败并出现以下错误:

You didn't provide enough string/numeric parameters to satisfy all of the dynamic segments for route [route name]

如果我将查询参数设置为refreshModel: false ,它就可以正常工作。

这是一个可重复的旋转: https ://ember-twiddle.com/e25fc434b6e1c1627e553b8120203655 = routes.dynamic-segment.js%2C
单击“带有查询参数的动态段”链接时,您会看到错误。 如果您将 /routes/dynamic-segment.js 上的refreshModel更改false ,它会起作用。

任何帮助表示赞赏。 谢谢!

Has Reproduction Router Bugs

最有用的评论

@krukid - 您提到的问题似乎与此处讨论的原始问题有些无关(我认为)。 你介意为此提交一个新问题吗?

@rreckonerr最近修复了一个有点相关的错误(在进行中间转换时我们不会遍历原始值),这似乎有点相关。 我认为这里的第一步是在 router.js 中创建一个失败的测试用例......

所有3条评论

在尝试transition.retry()Route.refresh()触发的 Transition 时,我遇到了类似的情况,其中queryParamsOnly: true

我想这与 #16921 有某种关系

我发现Route#refresh()会产生一个转换,如果有动态段,则无法重试。

这是我的用例: https :

@krukid - 您提到的问题似乎与此处讨论的原始问题有些无关(我认为)。 你介意为此提交一个新问题吗?

@rreckonerr最近修复了一个有点相关的错误(在进行中间转换时我们不会遍历原始值),这似乎有点相关。 我认为这里的第一步是在 router.js 中创建一个失败的测试用例......

此页面是否有帮助?
0 / 5 - 0 等级