我现在已经将几个项目升级到 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 的边缘情况或我自己的代码在这里的问题,我想知道你是否可以指出我的方向我可以进一步调查。
嗯,好像可能和你的设置有关(没看到别人报道过),你能不能尝试隔离在一个较小的演示应用程序中,以便我们更容易追踪?
稍微挖掘了一下,我发现这只发生在我使用私有路由服务的服务中: routing: service('-routing')
。
用router: service()
替换它可以解决我的问题,但是是否有任何记录在案的地方? 我的印象是公共路由器服务还没有到来。
最有用的评论
稍微挖掘了一下,我发现这只发生在我使用私有路由服务的服务中:
routing: service('-routing')
。用
router: service()
替换它可以解决我的问题,但是是否有任何记录在案的地方? 我的印象是公共路由器服务还没有到来。