EmberJS:如何在使用Fixture适配器时检索关联记录

时间:2013-11-26 19:38:29

标签: ember.js

我有两种模式:

BuzsakiViewer.Neuron = DS.Model.extend
  number: DS.attr()
  plots: DS.hasMany 'plot', { async: true }

BuzsakiViewer.Plot = DS.Model.extend
  filename: DS.attr()
  neuron: DS.belongsTo('neuron')
  path: ( ->
    'images' + '/' + @get('filename') 
  ).property('filename')

下面是一个示例neuron灯具和一个示例plot灯具。我的实际声明有更多记录:

BuzsakiViewer.Neuron.FIXTURES = [
  {
    "id": 1,
    "plots": [ 80, 81, 82, 83, 84, 85, 86, 87 ]
  }
]

BuzsakiViewer.Plot.FIXTURES = [
  {
    "filename": "n1_avgleft.png",
    "id": 80,
    "neuron": 1
  }
]

我有一个嵌套路线 neuron /:neuron_id / plots ,它应该将模型设置为特定神经元的图:

BuzsakiViewer.Router.map ->
  @resource 'neurons'
  @resource 'neuron', path: '/neurons/:neuron_id', ->
    @route 'plots'
  @resource 'plots'
  @resource 'plot', path: '/plots/:plot_id'

BuzsakiViewer.NeuronPlotsRoute = Ember.Route.extend
  model: (params) ->
    @store.find('neuron', params.neuron_id).then (neuron) ->
      neuron.get('plots')

但是当我去 / neurons /:neuron_id / plots 时,没有加载图。没有错误,但我可以在Chrome Ember Inspector中看到没有模型绑定到NeuronPlots路线。我确信我加载的神经元记录的plots字段中的所有图都存在于Plot.FIXTURES声明中。我做错了什么?

enter image description here

2 个答案:

答案 0 :(得分:1)

Nueron Plots路由不会获得neuron_id,因此您可能正在查询undefined。您可以使用modelFor获取上面路径的资源,然后在其上调用get plot,因此它看起来像这样(原谅我缺乏coffeescript技能)

BuzsakiViewer.NeuronPlotsRoute = Ember.Route.extend
  model: (params) ->
    @modelFor('nueron').get('plots')

答案 1 :(得分:0)

您可以使用需要在控制器中执行此操作 - Dependencies between controllers