ember.js侧载模型不工作
我必须覆盖一条路线来执行一些自定义加载模型,如下所示:ember.js侧载模型不工作,ember.js,ember-data,Ember.js,Ember Data,我必须覆盖一条路线来执行一些自定义加载模型,如下所示: 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)
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}"
{
Events: [{ Id: 1, Venues: [1], ... }],
Venues: [{ Id: 1, ... }]
}
返回的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')
依我看,这与你的路线无关,但与你的模型有关。确保你这样声明(当然他们必须在场) 我发现将
{{log event}}
包含到模板中有助于深入了解控制器和模型,并确保它确实没有被加载
注意:您确实在路由中返回了ajax响应,是吗?您返回的示例JSON链接不起作用,您能提供一个工作示例吗 您正在为您的ajax调用处理Ember数据,这意味着您将需要以更手动的方式处理它的反序列化。如果您希望ember为您这样做,您需要打电话到商店,如:
App.EventsRoute = Ember.Route.extend({
model: function() {
// other code here if necessary
return this.store.find('event', params._id);
}
此外,每当我没有将我的相关对象(在您的例子中是场地)加载到存储中时,这是因为JSON的格式不是Ember期望的格式,如下所示:
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}"
{
Events: [{ Id: 1, Venues: [1], ... }],
Venues: [{ Id: 1, ... }]
}
不是这样的:
{
Events: [{ Id: 1, Venue: { Id: 1, ... }, ... }],
}
也许这会有帮助?我的模型定义中确实包含了这一点。我已经更新了显示定义的问题。是的,我在路由中返回Ajax响应。