Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 从ember.save()方法检索呈现的json_Ember.js_Ember Data - Fatal编程技术网

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

Ember.js 从ember.save()方法检索呈现的json,ember.js,ember-data,Ember.js,Ember Data,当我在模型上调用.save()时,我的rails后端呈现json响应。在执行类似这样的jquery ajax PUT请求时,我可以检索返回的数据(请参见下面的数据参数): 在模型上调用.save()方法时,如何检索呈现的json self.store.find('conversation', conv.id).then(function(conversation){ conversation.set('status', 'opened'); conversation.save(

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

在模型上调用.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开始):

  • 你跑
  • 记录存储以计划其保存操作:
  • 每个运行循环循环一次,存储计划的保存操作:
  • 存储区使用记录的适配器执行保存:
  • 适配器支持记录的序列化程序将记录转换为JSON负载:
  • 适配器无法访问URL:
  • 适配器将请求发送到后端
  • 存储区使用序列化程序将来自服务器的响应转换为数据并将其推送到存储区:->->
  • 序列化程序,它不执行任何操作,但您可以重写它以清除有效负载
  • 序列化程序将有效负载和生成的有效负载发送到存储区
  • 存储方法
  • 在模型上存储
    didCommit
    事件
  • 最后,第1项中的
    record.save()
    返回的承诺得到解决
  • 这个列表中缺少一些步骤,我只强调了重要的步骤。我鼓励你遵循源代码中的整个过程,我给了你足够的参考资料


    现在谈谈你的问题。我建议你重写这个方法。在那里,您可以将后端的负载转换为余烬格式,并对其进行处理。不要忘记使用所有参数和修改后的有效负载调用this.super(),以便Ember实际将其推送到存储区

    看起来和我想要的一模一样。使用extractSave()的正确方法是什么?在哪里使用?我必须覆盖它还是已经实现了?我没有找到任何关于此的示例。运行
    ember g adapter conversation
    ,它将创建一个文件。在该文件中,声明一个
    extractSave
    方法。因为我不需要将这些数据存储在模型中,所以我做了一个简单的ember.$.ajax并将检索到的有效负载附加到我想要的内容中。
    self.store.find('conversation', conv.id).then(function(conversation){
    
        conversation.set('status', 'opened');
        conversation.save(); ** This returns json response that I want to retrieve **           
    
    });