你好我正在使用emberjs和ember-data,我是javascript的新手。
我在ember网站上关注本指南: http://emberjs.com/guides/models/the-rest-adapter/
我想知道如果能够使用ember-data rest适配器在sideloaded对象中加载对象列表,我将从后端接收以下输出:
{
"search_flight" : { "flight_ids" : [
166,
4792
] },
"flights" : [
{
"id" : 166,
"arrival_airport" : "CUL",
"date" : "Aug 14, 2013 12:00:00 AM",
"departure_airport" : "MEX",
"flight_detail_ids" : [ 166 ],
"flight_details" : [ {
"id" : 166,
"airline" : "Aeromexico",
"arrival_airport" : "CUL",
"arrival_time" : "16:48:00.000",
"departure_airport" : "MEX",
"departure_time" : "15:43:00.000",
"flight_number" : "166",
"travel_time" : 125
} ],
"flight_type" : 1,
"travel_time" : 125
},
{
//other flight...
}]
}
这是我的ember-data config:
App.Flight = DS.Model.extend({
date: DS.attr('string'),
departureAirport: DS.attr('string'),
arrivalAirport: DS.attr('string'),
travelTime: DS.attr('number'),
flightType: DS.attr('number'),
flightDetail: DS.hasMany('App.FlightDetail')
});
DS.RESTAdapter.configure('App.FlightDetail', {
sideloadsAs: 'flight_details'
});
我不知道我是否清楚。
gist url:https://gist.github.com/jmsalcido/f46730922864e2456a5b
答案 0 :(得分:2)
是的,这是可能的,但它不称为sideloading - ember支持这种技术,但将其称为嵌入式。所以替换DS.RESTAdapter.configure {(.... sideLoadAs...
尝试:
DS.RESTAdapter.map('App.Flight', {
flightDetails: { embedded: 'always' }
};
此外,由于这是一个hasMany关系,我建议您更改模型定义以使用复数flightDetails: DS.hasMany('App.FlightDetail')
而不是单数。
有关嵌入式hasMany关系的另一个示例,请参阅此SO帖子:
How to make embedded hasMany relationships work with ember data