gpt4 book ai didi

ember.js - 从 ember .save() 方法中检索呈现的 json

转载 作者:行者123 更新时间:2023-12-01 11:32:52 25 4
gpt4 key购买 nike

当我在我的模型上调用 .save() 时,我的 Rails 后端呈现一个 json 响应。当像这样执行 jquery ajax PUT 请求时,我可以检索返回的数据(见下文,数据参数):

$.ajax({
type : 'PUT',
url: '/conversations/' + conversation.id + '/assignation',
dataType: 'json',
data: newAssignation,
success: function(data) {
conversation.get('content').pushObject(data)};
});

在我的模型上调用 .save() 方法时如何检索呈现的 json?

self.store.find('conversation', conv.id).then(function(conversation){

conversation.set('status', 'opened');
conversation.save(); ** This returns json response that I want to retrieve **

});

最佳答案

当您执行 record.save() 时,会发生以下情况(从 Ember Data 1.0.0-beta-19.1 开始):

  1. 你跑 record.save() .
  2. 记录tells商店安排其保存操作:store.scheduleSave() .
  3. 每个运行循环周期一次,存储 flushes预定的保存操作:store.flushPendingSave() .
  4. 店铺asks执行保存的记录适配器:adapter.updateRecord() .
  5. 适配器asks将记录转换为 JSON 负载的记录序列化程序:serializer.serializeIntoHash .
  6. 适配器builds网址:adapter.buildURL .
  7. 适配器performs对后端的请求。
  8. 店铺asks序列化程序将来自服务器的响应转换为数据并将其推送到商店:serializer.extract() -> serializer.extractSave() -> serializer.extractSingle() .
  9. 序列化器 runs serializer.normalizePayload()它什么都不做,但您可以覆盖它以清理有效负载。
  10. 序列化器 prepares有效载荷和 pushes生成的负载到商店。
  11. 店铺runs它的store.didSaveRecord()方法。
  12. 店铺triggers模型上的 didCommit 事件。
  13. 最后,第 1 项中 record.save() 返回的 promise 得到解决。

此列表中缺少一些步骤,我只突出显示了重要的步骤。我鼓励您遵循源代码中的整个过程,我给了您足够的引用资料。

现在回答你的问题。我建议你覆盖 serializer.extractSave()方法。在那里,您可以将后端的有效负载转换为 Ember 格式并对其进行调整。不要忘记使用所有参数和修改后的有效负载调用 this.super(),以便 Ember 实际将其推送到商店!

关于ember.js - 从 ember .save() 方法中检索呈现的 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30767267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com