Ember.js 烬:路由ID在转换后丢失。重试()-我做错什么了吗?

Ember.js 烬:路由ID在转换后丢失。重试()-我做错什么了吗?,ember.js,ember-data,Ember.js,Ember Data,参见JSFIDLE: 有很多示例演示了如何在Ember中实现身份验证。为了保护对路由的访问,如果您没有有效的令牌,您将被重定向到登录页面。成功登录后(因此在获得有效令牌后),您将被重定向到最初请求的页面 实现:在重定向到登录之前,将请求的转换存储在对象中;登录后,读取对象属性并执行转换。重试 login: function () { var self = this; App.Session.set('token', '1234567890'); var attempte

参见JSFIDLE:

有很多示例演示了如何在Ember中实现身份验证。为了保护对路由的访问,如果您没有有效的令牌,您将被重定向到登录页面。成功登录后(因此在获得有效令牌后),您将被重定向到最初请求的页面

实现:在重定向到登录之前,将请求的转换存储在对象中;登录后,读取对象属性并执行转换。重试

login: function () {
    var self = this;

    App.Session.set('token', '1234567890');
    var attemptedTransition = App.Session.get('attemptedTransition');

    if (attemptedTransition) {
      attemptedTransition.retry();
    }
    ....
如果您通过根URL访问应用程序,那么这种方法很有效。您可以在JSFIDLE中看到这一点。单击出版物以查看出版物列表。然后,如果单击出版物查看详细信息,则必须登录。单击登录(只是模拟成功登录),您将转换到“详细信息”路径

但是,如果您直接访问“详细信息”URL
(例如浏览到http://yyy/index.html#/publications/1)
,则对存储的转换进行重试失败。在这种情况下,ID(路由的参数)似乎丢失了。url变为:
http://yyy/index.html#/publications/undefined

这是一个已知的问题吗?有解决办法吗

进一步资料: 如果检查转换,如果转换不起作用,则不会设置providedModelsArray。这与Ember.data有关吗

正确的转换(余烬检查(保存的转换)):


出现此问题的原因是在展会路线模型中使用的查找结果。您不应该使用findById(id)。正确的用法是:App.Publication.find(params.Publication\u id)

    {router: [object Object], promise: [object Object], 
data: [object Object], resolvedModels: [object Object], 
providedModels: [object Object], 
providedModelsArray: <App.Publication:ember330:2>, 
sequence: 2, params: [object Object], 
targetName: publications.show, isAborted: true} 
    {router: [object Object], promise: [object Object], 
data: [object Object], resolvedModels: [object Object], 
providedModels: [object Object], 
providedModelsArray: , 
sequence: 1, params: [object Object], 
targetName: publications.show, 
urlMethod: null, isAborted: true}