我认为这个主题在stackoverflow之前已经讨论过了,但是没有最新版本的ember数据。至少我发现的任何建议都不适用于我。
我使用最新版本的Ember和Ember数据(versjon 2.13.0)。我使用JsonApiAdapter。
方案
从服务器加载记录后,我想对其某些属性进行一些更改。这些更改不会使记录变脏,并且更改的属性不会显示在record.changedAttributes()
中。用户在此之后可能进行的任何更改都会使记录变脏。
搜索解决方案
我试图手动更改isDirty标志,但它没有这样做。我还试图找到在加载记录后设置状态的余烬数据代码中的位置(因为基本上我试图做同样的事情)但我还没找到它的位置。
我也试过record.send('pushedData')
,但我没有改变记录状态的任何内容。
任何帮助表示感谢。
答案 0 :(得分:3)
我知道有3种方法可以修改服务器的响应而不会弄脏记录:
您可以覆盖适配器的handleResponse方法,并在有效负载中进行修改。
您可以覆盖序列化程序的normalize方法。
您可以使用Ember。$。ajax方法从服务器加载记录,修改响应,然后将其传递给商店的pushPayload方法。
如果您需要在每次从服务器加载后修改记录(无论您使用哪种路由/控制器),前两种方法都是好的。适配器和序列化器都可以是特定于模型的。如果您只需要在一个地方(控制器或路线)进行,或者您需要访问路线/控制器的变量 - 第三种方法是好的。
我不知道将记录标记为脏/不脏的任何方法。如果在存储记录后修改记录,它就会变脏。