我有一个动作将模型对象传递给路径以删除它。但是当我在该对象上调用delete时,我认为model.destroyRecord
不是函数。
model() {
return this.store.findRecord('user', 980190980).then((user) => {
return user.getPlaylists();
}.bind(this));
},
<i class="fa-icon fa fa-trash" aria-hidden="true" {{action "deletePlaylist" playlist}} style="margin-top:10px"></i>
deletePlaylist(playlist) {
this.get('playlists').removeObject(playlist);
playlist.destroyRecord();
}
如果我这样做:
this.store.findRecord('playlist', playlist.id).then(playlist => playlist.destroyRecord());
我收到以下错误:
Attempted to handle event 'pushedData' while in state root.deleted.inFlight
答案 0 :(得分:0)
我会在您的电话debugger;
之前添加destroyRecord()
语句,并检查对象类型是否为Ember Data
模型。我怀疑.getPlaylists()
不是DS.Model
类型,而是普通的javascript对象(POJO)。
您的错误root.deleted.inFlight
表示保存记录时出错,如果无法先保存,则无法将其删除。 Ember试图让你知道它是一个肮脏的模型,这意味着它有变化而且还没有被保存。
http://emberjs.com/api/data/classes/DS.RootState.html
deleteRecord()
将在不调用服务器的情况下将其从商店中删除,destroyRecord()
将执行与deleteRecord()
相同的操作,并调用服务器通知此记录应从任何持久存储中删除。
您的代码也存在一些问题。 .bind()
无效。 findRecord
承诺没有正确的错误处理:
http://emberjs.com/api/classes/RSVP.Promise.html
promise.then(function(value) {
// on fulfillment
}, function(reason) {
// on rejection
});