1

我将 Ember 数据与 REST 适配器一起使用。我想确保在服务器响应缓慢的情况下,应用程序不会失败。

我已经模拟了这个 bij 在返回 JSON 响应之前在服务器端添加了 5 秒的睡眠方法。

如果您有一个带有 SAVE 按钮的表单,并且在之前的保存仍在进行中时单击此按钮,您会收到一个 inFlight 错误并且整个 Ember 应用程序冻结(您唯一能做的就是重新加载应用程序)。因此,您可以通过检查 isSaving 状态轻松禁用保存按钮:

<button {{action 'save'}} {{bindAttr disabled="isSaving"}}>Save</button>

现在看来,在之前的保存仍在进行中更改表单字段时,您会收到一个 inFlight 错误。因此,这表明我还需要禁用完整的表单。

Uncaught Error: Attempted to handle event `willSetProperty` on 
<App.Author:ember477:5203e34599808d1c6c000001> while in state 
rootState.loaded.updated.inFlight. Called with {reference: [object Object], store: 
<App.Store:ember541>, name: name} 

是否有处理这些情况的已知良好做法......我想防止我需要为这些边缘情况添加大量逻辑(禁用按钮、只读设置字段等)。

4

1 回答 1

2

它可能不在您尝试做的范围内,但Ember Persistence Foundation旨在允许在保存仍在进行中时更新您的模型。

将模型迁移到 EPF 相对简单,但是控制器代码需要进行一些更改,请参阅“从 Ember 数据迁移”

于 2013-08-09T06:19:14.207 回答