Ember.js 烬:路由ID在转换后丢失。重试()-我做错什么了吗?
参见JSFIDLE: 有很多示例演示了如何在Ember中实现身份验证。为了保护对路由的访问,如果您没有有效的令牌,您将被重定向到登录页面。成功登录后(因此在获得有效令牌后),您将被重定向到最初请求的页面 实现:在重定向到登录之前,将请求的转换存储在对象中;登录后,读取对象属性并执行转换。重试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
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}