0

I'm having to override a route to do some custom loading of models like this:

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}"

The JSON returned includes sideloaded models, but they aren't being loaded by ember. I'm guessing I need to do something to get them loaded but I don't know what. I'd appreciate any help on this.

Here's an example of the returned JSON.

Update

Here's the model definition:

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

返された JSON の例のリンクが機能しません。動作するサンプルを提供していただけますか?

あなたは ajax 呼び出しのために Ember-data を回っています。これは、より手動の方法で逆シリアル化を処理する必要があることを意味します。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 に答える
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 に答える