簡體   English   中英

在高延遲網絡下使用Ember Data時的奇怪行為

[英]Odd behavior when using Ember Data under a high-latency network

保存我的Ember Data模型會使數據存儲區根據服務器的響應來更新記錄。

在大多數情況下,此功能是預期的並且可以很好地工作。 但是,我遇到一種情況, 如果服務器響應速度很慢,則現在會重置在保存后修改的所有字段。

我們有一個需要“保存輸入模糊”的要求,因此我重新打開了一些內置的視圖助手,以將“保存”事件發送到當前控制器。 例如:

Ember.Select.reopen(Ember.TargetActionSupport, {
  _sendSave: function() {
    this.triggerAction({
      action: 'save',
      target: this.get('controller')
    });
  }.on('change')
});

至於當前的解決方案,我只是在限制save操作:

save: function() {
  Ember.run.throttle(this, this._save, 5000); // saves the model if `isDirty`
}

我想知道是否有人對解決此問題的最佳方法有任何想法? 我的團隊提到的一種解決方案是不同步傳入響應中的數據。 我認為這不是一個好主意,我希望當前記錄可以自己合並到響應的記錄中。 請讓我知道是否需要進一步闡述。

我最終修改了adapterDidCommit鈎子,將當前數據與服務器數據合並。

此處介紹了一種解決方案: 如果POST響應僅包含ID,如何將數據保存到Ember存儲中?

adapterDidCommit: function() {
  var currentData = this.toJSON();

  this._super.apply(this, arguments);

  Ember.merge(this._data, currentData);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM