1

您好,我正在使用 emberjs 和 ember-data,我对 javascript 真的很陌生。

我正在关注 ember 网站上的本指南:http: //emberjs.com/guides/models/the-rest-adapter/

我想知道我是否能够使用 ember-data rest 适配器在侧载对象中侧载对象列表,我从后端收到以下输出:

  {
    "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 配置中:

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'
});

我不知道我是否清楚。

要点网址:https ://gist.github.com/jmsalcido/f46730922864e2456a5b

4

1 回答 1

2

是的,这是可能的,但它不称为侧载 - ember 支持这种技术,但将其称为嵌入式。所以替换DS.RESTAdapter.configure {(.... sideLoadAs...尝试:

DS.RESTAdapter.map('App.Flight', {
  flightDetails: { embedded: 'always' }
};

此外,由于这是一个 hasMany 关系,我建议更改您的模型定义以使用复数flightDetails: DS.hasMany('App.FlightDetail')而不是单数。

有关嵌入式 hasMany 关系的另一个示例,请参阅此 SO 帖子:

如何使嵌入的 hasMany 关系与 ember 数据一起使用

于 2013-08-14T23:04:21.393 回答