当我在模型上调用.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 **
});
答案 0 :(得分:4)
执行record.save()
时,会发生以下情况(从Ember Data 1.0.0-beta-19.1开始):
record.save()
。store.scheduleSave()
。store.flushPendingSave()
。adapter.updateRecord()
。serializer.serializeIntoHash
。adapter.buildURL
。serializer.extract()
- > serializer.extractSave()
- > serializer.extractSingle()
。serializer.normalizePayload()
除了您可以覆盖它以清除有效负载之外什么都不做。store.didSaveRecord()
方法。didCommit
事件。record.save()
返回的承诺会解决。此列表中缺少一些步骤,我只强调了重要的步骤。我鼓励你在资料来源中遵循整个程序,我给了你足够的参考资料。
现在回答你的问题。我建议你覆盖serializer.extractSave()
方法。在那里,您可以将后端的有效负载转换为Ember格式并进行调整。不要忘记用this.super()
调用所有参数和修改后的有效负载,以便Ember实际将其推送到商店!