如何使用 jquery.when 和 ember 数据承诺
How to use jquery.when with ember data promises
我正在尝试在多个 ember 模型完成其保存方法时触发回调。
var promises = [];
modellist.forEach(function(mymodel){
promises.push(mymodel.save())
}
$.when.apply(null, promises).done(function () {
console.log('finished promises');
}
console.log('finished method');
立即执行应用函数。
问题:以下哪项是正确的?
- 承诺!= ember-承诺
- 承诺!=推迟
- ember-promise != deferred
我找到了解决方案:
- Ember.RSVP.all(承诺).then(函数(){...})
这在文档中不容易找到:-(
我是 RSVP.hash
的忠实粉丝,因为它允许对象,而 RSVP.all
使用数组。
如果你想在常规代码中使用它来保存多个模型。
actions: {
doSomething() {
Ember.RSVP.hash({
model1Saved: this.get('model1').save(),
model2Saved: this.get('model2').save(),
}).then((hash) => {
/* hash.model1Saved and hash.model2Saved are available here */
}, (error) => {
/* Deal with error */
});
}
}
这很好,因为您不必弄乱数组索引。
返回路线模型时也是如此
model() {
return Ember.RSVP.hash({
posts: this.store.findAll('post'),
tags: this.store.findAll('tag'),
categories: this.store.findAll('category'),
});
},
然后在setupController方法中你可以:
setupController(controller, model) {
this._super(controller, model.posts);
controller.set('tags', model.tags);
controller.set('category', model.categories);
}
我正在尝试在多个 ember 模型完成其保存方法时触发回调。
var promises = [];
modellist.forEach(function(mymodel){
promises.push(mymodel.save())
}
$.when.apply(null, promises).done(function () {
console.log('finished promises');
}
console.log('finished method');
立即执行应用函数。
问题:以下哪项是正确的?
- 承诺!= ember-承诺
- 承诺!=推迟
- ember-promise != deferred
我找到了解决方案:
- Ember.RSVP.all(承诺).then(函数(){...})
这在文档中不容易找到:-(
我是 RSVP.hash
的忠实粉丝,因为它允许对象,而 RSVP.all
使用数组。
如果你想在常规代码中使用它来保存多个模型。
actions: {
doSomething() {
Ember.RSVP.hash({
model1Saved: this.get('model1').save(),
model2Saved: this.get('model2').save(),
}).then((hash) => {
/* hash.model1Saved and hash.model2Saved are available here */
}, (error) => {
/* Deal with error */
});
}
}
这很好,因为您不必弄乱数组索引。
返回路线模型时也是如此
model() {
return Ember.RSVP.hash({
posts: this.store.findAll('post'),
tags: this.store.findAll('tag'),
categories: this.store.findAll('category'),
});
},
然后在setupController方法中你可以:
setupController(controller, model) {
this._super(controller, model.posts);
controller.set('tags', model.tags);
controller.set('category', model.categories);
}