如何从控制器正确访问Ember模型数据

时间:2016-07-07 20:48:07

标签: ember.js ember-data

我使用Ember.RSVP.hash访问Ember控制器中的多个模型:

export default Ember.Route.extend({
    model() {
        return Ember.RSVP.hash({
            categories: this.store.findAll('category')
            languages: this.store.findAll('language'),
            requirementTypes: this.store.findAll('requirement-type')
        });
    },

    setupController: function(controller, models) {
        controller.set('categories', models.categories);
        controller.set('languages', models.languages);
        controller.set('requirementTypes', models.requirementTypes);
    }
});

我毫不留下地用谷歌搜索了如何正确地在我的控制器中访问这个模型数据。到目前为止我找到的唯一方法感觉太过于苛刻。我只想访问从我的api返回的原始HTTP响应数据。

然而,当我写这个.get('categories')时,我得到的东西相当丑陋,是一个比我的api返回的更复杂的对象:

console.log(this.get('categories'))

“InternalModel”条目包含从我的api返回的 _data 属性中的实际数据:

InternalModel entry details

是否有更好的推荐方法来访问从我的api返回并通过相关路由传递给控制器​​的模型数据?我希望能够访问我的api返回的确切数据,例如this.get('categories'),并立即访问我的api发送的模型数据。

1 个答案:

答案 0 :(得分:4)

是的,这是正确的方法。 Ember数据是ember的持久层,你不必使用它,我不想这样做。但它非常有用,重点是通过模型对象访问数据的好方法。

在您的情况下,如果您从模型结果中循环访问其中一个集合,您将获得包含数据的ember记录。所以在控制器中你可以这样做:

this.get('categories').forEach(category => {
  // Do something with category data, i.e.
  console.log('Category name:', category.get('name'));
});