【发布时间】:2013-12-10 00:32:34
【问题描述】:
我想让一个函数返回来自model.save() 的承诺,但是对model.save() 的调用是在一个回调中,因此不会构成链。这就是我的意思:
function saveOn (target, attribute) {
target.addObserver(attribute, function () {
if (target.get(attribute)) {
target.removeObserver(attribute);
Ember.run.once(target, function() {
target.save();
});
}
});
};
(这个函数是解决this problem I previously posted所必需的)
我希望 target.save(); 行改为:return target.save();
然后我可以这样做:
saveOn().then();
目前它不起作用,错误消息只是 then 在该对象上不存在。
更新
teacherSignUp: function() {
var model = this.get('model');
var teacher = this.get('store').createRecord('teacher', {
description: 'Why hello sir',
user: model
});
model.set('teacher', teacher);
saveOn(teacher, 'user.isFulfilled').then(function() {
console.log("Model");
saveOn(model, 'teacher.isFulfilled');
});
}
console.log("Model"); 被成功调用,但模型从未持久化。
这里发生了什么?
更新已解决
模型上的第二个观察者从未被解雇,因为在老师完成saveOn 之后,模型就已经完成了。我刚刚将saveOn(model, 'teacher.isFulfilled'); 更改为model.save();,效果很好。
【问题讨论】:
-
我一度以为
Ember.run.once干扰了第二次通话,但我删除了它,但没有任何影响。
标签: javascript ember.js promise