如何访问 Ember 控制器中的模型数据

How to access model data in Ember controller

我主要是 Ember 的新手。 我想访问我的控制器中的模型数据。 我正在使用 Ember.RSVP.hash 在我的路线中加载多个模型。

我的路线

 model(params) {
   this.set('id', params.userID);
   return Ember.RSVP.hash({
     dashboards: this.store.findAll('dashboard', params)
      .then((dashboards) => dashboards.toArray()),
     user: this.store.find('user', params.userID)
    })
  },
  setupController(controller, model) {
    controller.setProperties(model);
  },

用户模型

export default DS.Model.extend({
  userID: DS.attr('string'),
  email: DS.attr('string'),
  name: DS.attr('string'),
  picture: DS.attr('string'),
  active: DS.attr('boolean'),
  permissions: DS.attr(),
  created: DS.attr('utc'),
  password: DS.attr('string')
});

然后我尝试访问其中一个用户模型参数。在 my controller 中,我创建了 init 函数并尝试访问用户模型参数。我写了什么:

  init() {
    console.log(this.get('user.name'));
  },

之后我得到 undefined。 这样做的正确方法是什么?

在您的控制器上使用 this.get('model') 来整体访问您的模型数据。您也可以使用 Ember.get(this, 'model.user.name');。你可以使用这样的东西:看看 the actions.

但是init是一个急切的钩子! model 属性 尚未设置 init 挂机!

你不应该访问它 init 方法。您可以使用 {{model.user}} 在模板中访问它。

  • findAll - 你不需要传递 params 你从模型钩子中得到的参数。
  • find 已弃用,请使用查询或查询记录
  • 那么 return 应该像 (dashboards) => return dashboards.toArray()
  • 这样的值
  • 您不需要重写 setupController,因为默认情况下它会在控制器中设置模型挂钩 return 值。
  • 只需确保使用 Ember 检查器将数据加载到存储中。

准备好twiddle for basic demonstration