【发布时间】:2016-07-18 13:45:51
【问题描述】:
我在 ember 2.6 中有以下代码;余烬数据 2.6.1
import Ember from 'ember';
export default Ember.Route.extend({
activate() {
var route = this;
var sessionId = localStorage.getItem('sessionId');
if (sessionId) {
localStorage.removeItem('sessionId');
this.store.findRecord('session', sessionId).then(function found(session) {
session.destroyRecord();
route.transitionTo('index');
});
} else {
this.transitionTo('sessions.new');
}
}
});
我有一个注销按钮,其 hbs 模板代码为:
<li>{{#link-to 'sessions.delete'}}{{fa-icon "fa-lock"}} Logout{{/link-to}}</li>
Route.extend 代码在调用 /sessions/delete 时执行!
我观察到的是 REST 调用的顺序是:
1) ***DELETE*** http://dozee.me:3000/api/sessions/<sessionId>
2) ***GET*** http://dozee.me:3000/api/sessions/<sessionId>
第二个 REST 请求抛出错误,因为到那时会话/cookie 已被清理。
我期望的是 REST 调用的顺序实际上应该是相反的,但我无法弄清楚为什么不是这样!
任何指针和提示将不胜感激;)
【问题讨论】:
-
这是从哪里来的(函数找到(会话)?
-
findRecord应该返回一个 Promise。不是吗? -
是的,但我从来没有见过那个函数调用......这就是我问的原因......我所做的是这个......然后((会话)=> {...}) ;如果你使用 ES6 和胖箭头......所以在你的例子中找到的函数是额外的......它也可以是这样的 then(function(session) { }....尝试不使用它......但不确定是否命名一个函数会有所作为......
-
这应该可以!您是否也可以在其他地方致电
findRecord? -
这就是我拥有的路线的所有代码。我没有看到
findRecord在其他任何地方被调用。
标签: javascript ember.js ember-data