Ember.js: 升级到 3.0.0 后出现“transitionTo”错误

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

我现在已经将几个项目升级到 3.0.0 并且其中一个很好,而另一个在我调用transitionTo时会抛出错误,例如

router.js:1011 Uncaught Error: More context objects were passed than there are dynamic segments for the route: projects
    at NamedTransitionIntent.applyToHandlers (router.js:1011)
    at NamedTransitionIntent.applyToState (router.js:940)
    at Router.getTransitionByIntent (router.js:1229)
    at Router.transitionByIntent (router.js:1348)
    at doTransition (router.js:1947)
    at Router.transitionTo (router.js:1418)
    at Class._doTransition (router.js:561)
    at Class.transitionTo (routing.js:18)
    at session.save.then.s (session.js:104)
    at tryCatcher (rsvp.js:215)

似乎问题出在applyToHandlers

var objects = this.contexts.slice(0);
// ...
if (objects.length > 0) {
  throw new Error('More context objects were passed than there are dynamic segments for the route: ' + targetRouteName);
}

从使用调试器查看它似乎由于某种原因经历了两次,并且在第一次通过时objects[] (因为它应该是因为这里没有动态段)但是在第二个是[undefined]长度验证失败。

看到我在我的其他应用程序中没有遇到这个问题,我不确定我是否遇到了 Ember 的边缘情况或我自己的代码在这里的问题,我想知道你是否可以指出我的方向我可以进一步调查。

Needs Reproduction

最有用的评论

稍微挖掘了一下,我发现这只发生在我使用私有路由服务的服务中: routing: service('-routing')

router: service()替换它可以解决我的问题,但是是否有任何记录在案的地方? 我的印象是公共路由器服务还没有到来。

所有3条评论

嗯,好像可能和你的设置有关(没看到别人报道过),你能不能尝试隔离在一个较小的演示应用程序中,以便我们更容易追踪?

稍微挖掘了一下,我发现这只发生在我使用私有路由服务的服务中: routing: service('-routing')

router: service()替换它可以解决我的问题,但是是否有任何记录在案的地方? 我的印象是公共路由器服务还没有到来。

@artcommacode是的,它是在关于 2.15 版本的帖子中宣布的

然后关闭这个。

谢谢!

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