0

我不得不重写一个路由来做一些这样的模型的自定义加载:

App.EventsIndexRoute = Ember.Route.extend
  model: (params) ->
    origin = LJ.origin().join(',')
    location = [LJ.stripQuery(params.loc2), params.loc1].join(',')
    h = $.param(origin: origin, location: location)
    $.getJSON "#{LJ.CONFIG.api.url}/events?#{h}"

返回的 JSON 包括侧加载模型,但它们没有被 ember 加载。我猜我需要做一些事情来加载它们,但我不知道是什么。我很感激这方面的任何帮助。

这是返回的 JSON 的示例

更新

这是模型定义:

App.Event = DS.Model.extend
  acts: DS.hasMany('App.Act')
  ageLimit: DS.attr('string')
  centsAdvance: DS.attr('number')
  centsDoor: DS.attr('number')
  currency: DS.attr('string')
  description: DS.attr('string')
  endsAt: DS.attr('number')
  priceAdvance: DS.attr('string')
  priceDoor: DS.attr('string')
  repeats: DS.attr('string')
  repeatsUntil: DS.attr('string')
  startsAt: DS.attr('number')
  title: DS.attr('string')
  url: DS.attr('string')
  venue: DS.belongsTo('App.Venue')
  venueSection: DS.attr('string')
4

2 回答 2

0

IMO 这与您的路线无关,而与您的模型有关。确保你这样声明(他们当然必须在场)

App.Event = DS.Model.extend({
  venue: DS.belongsTo('App.Venue'),
  acts: DS.hasMany('App.Act'),
  // go on with the model
});

我发现{{ log event }}在模板中包含 a 以深入了解控制器和模型并确保它确实没有被加载很有帮助

Ps:您确实在路由中返回了ajax响应,不是吗?

于 2013-03-10T21:35:49.823 回答
0

您返回的示例 JSON 的链接不起作用,您能否提供一个工作示例?

您将围绕 Ember-data 进行 ajax 调用,这意味着您需要以更手动的方式处理反序列化。如果您希望 ember 为您执行此操作,则需要致电商店,例如:

App.EventsRoute = Ember.Route.extend({
    model: function() {
        // other code here if necessary
        return this.store.find('event', params._id);
    }

此外,每当我没有将相关对象(在您的情况下为场地)加载到商店中时,这是因为 JSON 不是 Ember 期望的格式,如下所示:

{
    Events: [{ Id: 1, Venues: [1], ... }], 
    Venues: [{ Id: 1, ... }]
}

不喜欢这样:

{
    Events: [{ Id: 1, Venue: { Id: 1, ... }, ... }], 

}

也许这有帮助?

于 2014-03-31T18:28:22.613 回答