【问题标题】:ember.js sideloaded models not workingember.js 侧载模型不起作用
【发布时间】:2013-03-10 19:46:30
【问题描述】:

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

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 的Here's an example

更新

这是模型定义:

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

【问题讨论】:

    标签: ember.js ember-data


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我的模型定义中确实有这个。我已经更新了显示定义的问题。是的,我在路由中返回 Ajax 响应。
    【解决方案2】:

    您返回的示例 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, ... }, ... }], 
    
    }
    

    也许这有帮助?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-13
      • 1970-01-01
      相关资源
      最近更新 更多