2013-12-13 14 views
1

我有一個有兩個路線,用戶和主題的燼應用程序。我(想)使用RESTAdapter從一個API獲取數據,但是API不會在必要的格式返回數據,即,而不是返回:定製燼中的RESTAdapter

{ 
    "user": { 
    id: "1", 
    name: "John Doe" 
    } 
} 

我的API收益:

{ 
    id: "1", 
    name: "John Doe" 
    } 

我一直在閱讀很多相關的問題,並推測我需要在我的適配器中使用某種序列化器來爲我的JSON進行自定義。到目前爲止,我已經根據回答和示例提出了這個問題:

App.Adapter = DS.RESTAdapter.extend({ 
    host: 'http://example.com', 
    serializer: DS.RESTSerializer.extend({ 
     extractMany: function(loader, json, type, records) { 
     var root = this.rootForType(type); 
     var roots = this.pluralize(root); 

     formattedJson = {}; 
     formattedJson[roots] = json.entries; 
     delete formattedJson.pagination; 
     this._super(loader, formattedJson, type, records); 
     } 
    }) 
}); 

但它似乎沒有任何效果。我也想知道是否需要爲每個模型編寫一個不同的適配器,因爲我認爲上述內容不能同時創建userssubjects根。任何人都可以將我指向正確的方向嗎?

回答

3

每類序列化是ED超級容易爲1.0,請參閱下面的文檔,而這個例子應該爲你的用戶模型工作。

https://github.com/emberjs/data/blob/master/TRANSITION.md

App.UserSerializer = DS.RESTSerializer.extend({ 
    extractSingle: function(store, type, payload, id, requestType) { 
    payload = {user:payload}; 
    return this._super(store, type, payload, id, requestType); 
    } 
} 
+0

感謝@ kingpin2k,難道我用這個來代替我上面定義的序列化? – bookthief

+0

是的,上面的方式是定義串行器的舊方法 – Kingpin2k