0

我正在使用 ember-data 从 API 获取数据(仅使用find方法)。数据会定期从服务器刷新。提交操作在 ember-data 之外处理。

但是,当更改属性时,记录被标记为uncommitted并且无法在下一个find请求中刷新,因为它需要处于loaded.saved状态。

是否有任何方法可以强制记录在loaded.saved属性更改时保留?

4

1 回答 1

1

我做了一些与此类似的事情。试试这个。未经测试的代码!

覆盖 DS.Model 上的 init 方法,并为 DS.Model 上的每个属性添加一个观察者。观察者委托一个回调来强制你的模型状态返回“loaded.saved”

App.YourModel = DS.Model.extend({
  init: function(){
    this._super();
    this.eachAttribute(function(attributeName){
      this.addObserver(attributeName, this, this.revertToLoadedSavedState);
    }, this);
  },

  revertToLoadedSavedState: function() {
    //hackity hack
    this.get('stateManager').transitionTo('loaded.saved');
  }
}

如果可行,您的模型将持续处于“loaded.saved”状态。但是,当您加载实体实例时,观察者的数量将会失控地增加。

也许您可以在从服务器刷新之前迭代您的脏模型并使用 stateManager 强制每个脏实例进入“loaded.saved”状态。

于 2013-06-12T17:35:15.423 回答