繁体   English   中英

删除失败后回滚模型不会更新视图

[英]Rolling back a model after failed delete doesn’t update view

我试图通过回滚模型并将其保留在视图中来捕获并处理失败的删除请求,但我遇到了问题。 我在控制器的删除操作中有以下内容:

model.delete();

model.save().then(function() {

  alert('Deleted!');

}, function(err) {

  alert('Delete failed...');
  model.rollback();

});

这似乎工作正常,我可以看到模型迅速从商店中消失,然后立即添加回来,但问题是它只是没有重新出现在视图中。

在删除/回滚之前和之后,模型都具有以下属性

isLoaded:true
isDirty: false
isSaving: false
isDeleted: false
isError: false
isNew: false
isValid: true

我的模板如下:

<table>
<thead>
  <tr>
    <th></th>
    <th>Name</th>
    <th>Number</th>
    <th>Speed Dial</th>
  </tr>
</thead>
<tbody>

  {{#each contact in model}}

    {{phonebook-row data=contact}}

  {{/each}}

</tbody>

</table>

最后,这是相应路线中的模型挂钩。

export default Ember.Route.extend({

  model: function() {
    return this.store.find('phonebook', { pageSize: 200 });
  }

});

我在 Ember 1.11.1 和 Ember Data 1.0.0-beta.16.1

这是预期的行为,还是我错过了什么? 任何信息,将不胜感激!

根据我对 Ember Data 的了解,这是我的最佳猜测

您这条路线的模型是一组记录。 具体来说,它可能是RecordArray的某个子类。 RecordArray可能会为您处理一些事情,例如在删除记录时从数组中删除记录。 (众所周知,Ember Data 会在其他地方执行此操作,例如FilteredRecordArray 。)我的猜测是 Ember Data 足够聪明,可以在删除记录时从数组中删除它,但不够聪明,无法在滚动时将其添加回数组回来了。

至于如何修复它,我不是 100% 确定。 :/你的后model.rollback()调用,也许尝试调用model.reload() 这与其说是一种解决方法,不如说是一种解决方法,但它可以让您暂时度过难关。 同时,我将尝试重现这个问题,看看它是否是 Ember Data 中的错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM