2013-03-10 3 views
0

У меня переопределить маршрут, чтобы сделать некоторые пользовательские загрузки моделей, как это:ember.js модели не загружена на рабочую

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, возвращаемой включает в себя загруженные модели, но они не загружается уголек. Я предполагаю, что мне нужно что-то сделать, чтобы загрузить их, но я не знаю, что. Я был бы признателен за любую помощь в этом.

Here's an example возвращенного JSON.

Update

Вот определение модели:

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

ответ

0

ИМО это не имеет ничего общего с маршрутом, но с вашей моделью. Убедитесь, что вы объявляете это как то (они должны присутствовать конечно)

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

я счел полезным включить {{ log event }} в шаблон, чтобы вырыть в контроллер и модель, и убедитесь, что он действительно не имеет загрузить

Пс: Вы возвращаете ответ ajax на маршруте, не так ли?

+0

У меня есть это в моем определении модели. Я обновил вопрос, показывающий определение. И да, я возвращаю ответ Ajax на маршруте. –

0

Ссылка на пример JSON, который вы возвращаете, не работает, не могли бы вы предоставить рабочий образец?

Вы собираетесь использовать данные Ember для вашего вызова ajax, что будет означать, что вам придется обрабатывать десериализацию его более вручную. Если вы хотите уголек, чтобы сделать это для вас, вам нужно позвонить в магазин, как:

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, ... }, ... }], 

} 

Может быть, это поможет?

Смежные вопросы