Ember.js 仅将余烬数据用于获取数据(不用于提交)。如何不将记录标记为';未承诺';更改属性时?

Ember.js 仅将余烬数据用于获取数据(不用于提交)。如何不将记录标记为';未承诺';更改属性时?,ember.js,ember-data,Ember.js,Ember Data,我使用ember数据从API获取数据(仅使用find方法)。数据会定期从服务器刷新。提交操作在余烬数据之外处理 但是,当更改属性时,记录被标记为未提交,并且在下一次查找请求中无法刷新,因为它需要处于已加载.已保存状态 是否有任何方法可以在属性更改时强制记录保留在加载的.保存的中?我做了一些类似的事情。试试这个。未经测试的代码 重写DS.Model上的init方法,并为DS.Model上的每个属性添加一个观察者。观察者委托给回调,该回调将强制您的模型状态返回“已加载。已保存” App.YourMo

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

但是,当更改属性时,记录被标记为
未提交
,并且在下一次
查找
请求中无法刷新,因为它需要处于
已加载.已保存
状态


是否有任何方法可以在属性更改时强制记录保留在加载的.保存的
中?

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

重写DS.Model上的init方法,并为DS.Model上的每个属性添加一个观察者。观察者委托给回调,该回调将强制您的模型状态返回“已加载。已保存”

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”状态。

这对您有用吗?您可能有兴趣阅读以下内容:您可以通过观察isDirty而不是每个属性都有观察者来反转它们在那里描述的自动保存模式,以使您的模型保持在loaded.saved状态