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 通过API端点加载原始数据,让Ember将其转换为相应的模型_Ember.js_Ember Data - Fatal编程技术网

Ember.js 通过API端点加载原始数据,让Ember将其转换为相应的模型

Ember.js 通过API端点加载原始数据,让Ember将其转换为相应的模型,ember.js,ember-data,Ember.js,Ember Data,我希望Ember(和数据)从API端点请求模型,但将原始数据转换为模型,以便Ember可以透明地使用它 问题 当页面加载时,我们通过许多API端点加载数据。我们还通过Pusher将数据推送到页面。为了将原始数据转换整合到单个位置,我们决定将该逻辑放在客户机上。当我们将新数据推送到页面时,我们有一个实用方法,可以将该数据转换为交互记录 现在,我们还需要转换服务器通过AJAX请求传递给页面的原始数据。它需要通过相同的实用程序方法,但我不确定从哪里截取来自API的响应,以便正确地转换数据。我应该在哪里

我希望Ember(和数据)从API端点请求模型,但将原始数据转换为模型,以便Ember可以透明地使用它

问题 当页面加载时,我们通过许多API端点加载数据。我们还通过Pusher将数据推送到页面。为了将原始数据转换整合到单个位置,我们决定将该逻辑放在客户机上。当我们将新数据推送到页面时,我们有一个实用方法,可以将该数据转换为交互记录

现在,我们还需要转换服务器通过AJAX请求传递给页面的原始数据。它需要通过相同的实用程序方法,但我不确定从哪里截取来自API的响应,以便正确地转换数据。我应该在哪里寻找,我可以使用什么方法

原始数据将根据其信息类型而有所不同,但这里有一个示例:

{
    "created_at": "Wed May 01 18:32:43 +0000 2013",
    "id": 329664697345384448,
    "id_str": "329664697345384448",
    "text": "@steveWINton true dat",
    "user": {
        "created_at": "Thu Feb 14 13:07:51 +0000 2008",
        "id": 13470142,
        "id_str": "13470142",
        "name": "uo\u0287u\u0131\u028d\u01dd\u028c\u01dd\u0287s",
        "screen_name": "NOTsteveWINton"
    }
}
需要将其转换为以下格式:

Social.Interaction = DS.Model.extend({
    native_id: DS.attr("string"),
    screen_name: DS.attr("string"),
    name: DS.attr("string"),
    text: DS.attr("string")
});
当页面加载时,我们将传入一个交互ID列表。然后,Ember将通过点击InteractionsAPI端点来侧向加载完整数据。该部分不会改变其当前的工作方式


我们想要的是能够将原始数据从交互端点传递到页面,而不是模型的“最终”版本。

刚刚做了手术,所以我现在是一个简短的回答者。您需要创建一个自定义序列化程序,可能是每种类型


请参阅:

您是否可以使用vanilla$.ajax进行投票,并在完成上面提到的“转换”后进行推送

var json = do_something_to_transform_it_here();
store.serializerFor('interaction').pushSinglePayload(store, 'interaction', json);