相关疑难解决方法(0)

如何使用ember-data手动设置对象状态以清理(保存)

说明:

我正在使用ember-data作为我的一个项目,我有一个问题围绕着污染对象的可能性,然后故意将其状态再次设置为清理 - 而不是提交更改.场景是这样的:

假设我已经获取了一个对象,banana = App.Fruit.find('banana');并且它描述了"黄色水果!".使用XHR长轮询(或WebSockets),我可能会收到对象的更新版本,因为另一个用户已将描述更改为"美味的黄色水果!" 在我取出原始对象后的任何给定时间点.

然后,我想要做的是更新对象以反映新接收的数据.为此,我尝试了不同的方法:

  • 我试过打电话App.Store.load(App.Fruit, new_data);.首先,这种方法不起作用,其次,这不是我想要的.我本可以对对象进行未经提交的更改,在这种情况下,放弃那些(假设load()调用会覆盖它们)是不可取的.

  • 我已经尝试循环遍历新数据,调用.set()- 如下所示:banana.set('description', new_data.description);- 以便用新数据更新对象属性(适用时=不脏).这有效,但它使物体处于脏污状态.

为了使对象再次清理/更新 - 并且没有适配器提交更改! - 我看了一下物体穿过的状态.这些(至少):

  • 步骤1:最初,对象处于该rootState.loaded.saved状态.
  • 第2步:调用.set()属性将其推送到rootState.loaded.updated.uncommitted状态.
  • 第3步:调用App.store.commit();将对象返回到rootState.loaded.saved状态.

因此,我试图对象状态手动设置为saved步骤2之后,如下所示:banana.get('stateManager').goToState('saved');.

但是,这不起作用.下次商店因任何其他原因而提交时,此操作会产生inFlightDirtyReasons未定义错误.

题:

我的问题是:如何再次手动将脏污物体的状态更改为清洁(保存)?

ember.js ember-data

23
推荐指数
6
解决办法
1万
查看次数

标签 统计

ember-data ×1

ember.js ×1