灰烬数据:将数据推送到存储区将不会替换记录的changedAttributes吗?

时间:2019-05-23 12:35:36

标签: ember.js ember-data ember-model

我正在使用Ember Data,并且有一个模型,说my-model。如果记录有任何更改,我有一个实时通知服务器来更新我的应用程序。当我从UI编辑my-model的属性时,模型中有一些changedAttributes,当实时通知到来时,我正在从服务器中提取记录,并使用{{1 }}。

现在,在商店中,模型仍然具有我的changedAttributes,并且不会被替换。因此,我相信,当执行store.push(store.normalize('my-model', data))时,Ember Store不会替换整个记录,而只会替换记录的clean属性。我只想确认行为。有人可以确认我对此是否理解正确?

2 个答案:

答案 0 :(得分:1)

对于这样的事情,我认为您最好的选择是添加一个测试来嵌入数据本身以覆盖所需的行为。这将比您在Stackoverflow上听到的任何内容都要可靠得多。

答案 1 :(得分:1)

我写了一个小的Ember Twiddle来测试该行为:https://ember-twiddle.com/a8eb87a1c7e5019214320d81af05aca5?openFiles=templates.application.hbs%2C正如它显示的那样,如果再次将记录推入存储,则ember-data不会重置脏属性-至少不是针对经过测试的版本3.4 .2,这有点过时了。

我无法在ember-data repository中找到涉及您的用例的任何测试,但我也不熟悉Ember Data的源代码。因此,您可能想在此处打开一个问题,或在Ember Community DiscordEmber Discussion Forum上询问是否为预期的行为。

说实话,我想应该有一个针对您问题的简单解决方案,因为实时通知(例如通过WebSocket)是一个常见的用例。