如何在ember中加载父对象的子对象

时间:2013-04-17 04:11:08

标签: ember.js ember-data

我使用Ember RC2和Ember-Data 12具有以下关系(简化):

App.GlobalData = DS.Model.extend({
    lat: DS.attr('number'),
    lon: DS.attr('number'),
});

App.System = DS.Model.extend({
    title: DS.attr('string'),

    data: DS.belongsTo('App.GlobalData'),   
});

在我的(系统)视图中,我现在想要访问孩子的数据,如下所示:{{ data.lat }}

看起来像Ember(目前我正在使用FixtureAdapter,但我也想在将来使用RESTadapter工作)不会自动加载子元素数据。虽然{{ data.id }}返回了id的值(在App.GlobalData.FIXTURES中指定),但{{ data.lat }}返回了undefined

我通过创建一个阵列控制器解决了这个问题:

App.GlobalDatasController = Ember.ArrayController.extend({});
App.globalDatasController = App.GlobalDatasController.create({});

并在我的ApplicationRoute中预加载所有GlobalData

App.ApplicationRoute = Ember.Route.extend({
  setupController: function() {
      App.globalDatasController.set('content', App.GlobalData.find());
  }
});

然而,这似乎不是一个好的解决方案,因为它需要我加载所有 GlobalData,即使我可能只需要一个。

我确信有一个如何处理这个问题的最佳做法,但是,尽管我做了最好的研究工作,但我还是找不到它。

总结我的问题:

  1. 如何以及在何处告诉ember使用父级加载子数据(不加载它)?
  2. 如果sideloading是唯一选项,我将如何在FixtureAdapter中实现它?
  3. 谢谢!

1 个答案:

答案 0 :(得分:0)

我发现了问题:在我的FIXTURES中,我将ID指定为整数而不是字符串。不知道为什么会有所作为,但一旦我改变了它,它就起作用了。