销毁 Ember 数据记录时出错
Error while destroy Ember Data record
我在删除 Ember 数据记录时遇到错误,我无法弄清楚原因,
Attempted to handle event `pushedData` on <card:32> while in state root.deleted.inFlight.
Error
下面的代码是触发错误的地方,
deleteBtnClicked() {
const controller = this.controllerFor('browse/index');
let selectedCards = controller.getSelectedCard();
selectedCards = selectedCards.map((card) => {
return parseInt(Ember.get(card, 'id'));
});
selectedCards.forEach((id) => {
this.store.find('card', id)
.then((card) => {
card.destroyRecord();
});
});
}
原来记录删除成功,但错误依旧
find is private method so please don't use it. Instead you can use findAll
and findRecord
deleteBtnClicked() {
const controller = this.controllerFor('browse/index');
let selectedCards = controller.getSelectedCard();
//if selectedCards itself is RecordArray you can easily iterate using forEach and destroyRecord. no need of findRecord.
selectedCards = selectedCards.map((card) => {
return parseInt(Ember.get(card, 'id'));
});
//I added reload: true this will ensure promise will be resolved only after adapters returns the data.
selectedCards.forEach((id) => {
this.store.findRecord('card', id, { reload: true })
.then((card) => {
card.destroyRecord();
});
});
}
我在删除 Ember 数据记录时遇到错误,我无法弄清楚原因,
Attempted to handle event `pushedData` on <card:32> while in state root.deleted.inFlight.
Error
下面的代码是触发错误的地方,
deleteBtnClicked() {
const controller = this.controllerFor('browse/index');
let selectedCards = controller.getSelectedCard();
selectedCards = selectedCards.map((card) => {
return parseInt(Ember.get(card, 'id'));
});
selectedCards.forEach((id) => {
this.store.find('card', id)
.then((card) => {
card.destroyRecord();
});
});
}
原来记录删除成功,但错误依旧
find is private method so please don't use it. Instead you can use findAll
and findRecord
deleteBtnClicked() {
const controller = this.controllerFor('browse/index');
let selectedCards = controller.getSelectedCard();
//if selectedCards itself is RecordArray you can easily iterate using forEach and destroyRecord. no need of findRecord.
selectedCards = selectedCards.map((card) => {
return parseInt(Ember.get(card, 'id'));
});
//I added reload: true this will ensure promise will be resolved only after adapters returns the data.
selectedCards.forEach((id) => {
this.store.findRecord('card', id, { reload: true })
.then((card) => {
card.destroyRecord();
});
});
}