0

我刚刚开始学习 ember,并且正在编写一个从数据库读取的简单应用程序。我已经让它以我想要的方式与固定装置一起工作,并且刚刚开始从数据库中读取一些进展。现在我的问题是我无法访问子元素 - 我有一个父类,我通过序列化程序使用 json 响应,并且我正在为 json 请求中的子元素提供服务。但是,我不知道从哪里去获取 ember 中的父类来读取和显示子元素。下面的代码可能更有意义。

如果您需要任何其他代码,请告诉我 - 这些都是标准的 Ember 代码,没有规范!我要继续的唯一线索是我当前的嵌套 ruby​​ 路由用作群组/:id/boots/:id,而当使用夹具数据加载群组/:id/:id 时,ember :)

楷模:

Plato.Boot = DS.Model.extend(
    name: DS.attr("string"),
    cohort: DS.belongsTo('Plato.Cohort'),
    hubs: DS.hasMany('Plato.Hub')
)
Plato.Cohort = DS.Model.extend(
  name: DS.attr('string'),
  boots: DS.hasMany('Plato.Boot')
)

路由.rb

  root to: 'application#index'

  resources :cohorts do
    resources :boots
  end

  resources :boots

群组(父)控制器

class CohortsController < ApplicationController
    respond_to :json
  def index
    respond_with Cohort.all
  end

  def show
    respond_with Cohort.find(params[:id])
  end
end

引导(子)控制器

class BootsController < ApplicationController
    respond_to :json
  def index
    respond_with Boot.all
  end

  def show
    respond_with Boot.find(params[:id])
  end
end

Router.js.coffee

Plato.Router.map ()->
    this.resource('cohorts', ->
    this.resource('cohort', {path: '/:cohort_id'}, ->
        this.resource('boot', {path: 'boots/:boot_id'})
    )
  )

Plato.CohortsRoute = Ember.Route.extend(
    model: ->
        Plato.Cohort.find()
)

Plato.BootsRoute = Ember.Route.extend(
    model: -> 
        Plato.Boot.find(params)
)
4

1 回答 1

1

您是否尝试过boots在路由器映射中定义嵌入式记录?

例如:

Plato.Adapter = DS.RESTAdapter.extend();

Plato.Store = DS.Store.extend({
  adapter: Plato.Adapter
});

Plato.Adapter.map('Plato.Cohort', {
  boots: {embedded: 'always'}
});

这样嵌入的记录将与父记录一起加载。

希望能帮助到你。

于 2013-06-21T08:25:27.220 回答