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