我将Ember数据与REST适配器一起使用。我想确保在服务器响应缓慢的情况下,应用程序不会失败。
我已经模拟了这个bij在服务器端添加一个5秒的睡眠方法,然后返回JSON响应。
如果您有一个带有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}
是否有一个已知的良好做法来处理这些情况...我想防止我需要为这些边缘情况添加大量逻辑(禁用按钮,设置字段只读等)。
答案 0 :(得分:2)
它可能不在您尝试的范围内,但Ember Persistence Foundation旨在允许在保存仍在进行时更新您的模型。
将模型迁移到EPF相对简单,但控制器代码中需要进行一些更改,请参阅"Migrating from Ember Data"。