Ember: 在不设置 isdirty 的情况下编辑模型对象
Ember: Edit model object without setting isdirty
这个主题之前在 Whosebug 上讨论过,但我认为没有使用最新版本的 ember 数据。我发现的建议中至少 none 对我有用。
我使用的是最新版本的Ember和Ember数据(versjon 2.13.0)。我使用 JsonApiAdapter。
场景
从服务器加载记录后,我想对其某些属性进行一些更改。这些更改不应使记录变脏,并且更改的属性不应显示在 record.changedAttributes()
中。之后用户可能做的任何更改都会使记录变脏。
正在寻找解决方案
我曾尝试手动更改 isDirty 标志,但没有成功。我还试图在 ember 数据代码中找到在加载记录后设置状态的位置(因为本质上我正在尝试做同样的事情)但我还没有找到它在哪里。
我也试过 record.send('pushedData')
,但我没有改变记录的任何状态。
感谢任何帮助。
我知道 3 种方法可以在不弄脏记录的情况下修改服务器的响应:
您可以覆盖适配器的 handleResponse 方法并直接在负载中进行修改。
您可以覆盖序列化程序的 normalize 方法。
您可以使用Ember.$.ajax方法从服务器加载记录,修改响应,然后将其传递给商店的pushPayload方法。
如果您需要在每次从服务器加载后修改记录(无论您从什么 route/controller 执行此操作),前两种方法都不错。适配器和序列化器都可以是特定于模型的。如果您只需要在一个地方(控制器或路由)执行此操作,或者如果您需要访问路由's/controller 的变量 - 第三种方法很好。
我不知道有什么方法可以将记录标记为 dirty/not 脏。如果在存储后修改记录,它会变脏。
这个主题之前在 Whosebug 上讨论过,但我认为没有使用最新版本的 ember 数据。我发现的建议中至少 none 对我有用。
我使用的是最新版本的Ember和Ember数据(versjon 2.13.0)。我使用 JsonApiAdapter。
场景
从服务器加载记录后,我想对其某些属性进行一些更改。这些更改不应使记录变脏,并且更改的属性不应显示在 record.changedAttributes()
中。之后用户可能做的任何更改都会使记录变脏。
正在寻找解决方案
我曾尝试手动更改 isDirty 标志,但没有成功。我还试图在 ember 数据代码中找到在加载记录后设置状态的位置(因为本质上我正在尝试做同样的事情)但我还没有找到它在哪里。
我也试过 record.send('pushedData')
,但我没有改变记录的任何状态。
感谢任何帮助。
我知道 3 种方法可以在不弄脏记录的情况下修改服务器的响应:
您可以覆盖适配器的 handleResponse 方法并直接在负载中进行修改。
您可以覆盖序列化程序的 normalize 方法。
您可以使用Ember.$.ajax方法从服务器加载记录,修改响应,然后将其传递给商店的pushPayload方法。
如果您需要在每次从服务器加载后修改记录(无论您从什么 route/controller 执行此操作),前两种方法都不错。适配器和序列化器都可以是特定于模型的。如果您只需要在一个地方(控制器或路由)执行此操作,或者如果您需要访问路由's/controller 的变量 - 第三种方法很好。
我不知道有什么方法可以将记录标记为 dirty/not 脏。如果在存储后修改记录,它会变脏。