Ember.js 如何从控制器正确访问余烬模型数据

Ember.js 如何从控制器正确访问余烬模型数据,ember.js,ember-data,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'), require

我正在使用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返回的东西复杂得多:

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


是否有更好的、推荐的方法来访问从我的api返回并通过相关路由传递给控制器的模型数据?我希望能够访问api返回的准确数据,并使用类似的方式。获取(“类别”)并立即访问api发送的模型数据。

是的,这是正确的方法。余烬数据是余烬的一个持久层,您不必使用它,我不想使用它。但它非常有用,关键是要有一种通过模型对象访问数据的好方法

在您的例子中,如果您循环模型结果中的一个集合,您将获得包含您的数据的余烬记录。因此,在控制器中,您可以执行以下操作:

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

为什么要访问确切的api响应?难道你不能定义你的模型来拥有你需要的所有数据吗?您将无法使用ember store方法访问确切的响应,您需要使用常规ajax请求才能做到这一点。我正在使用ember数据发出api请求,然后将该模型数据传递给控制器。我这样做真的是最好的方式吗?如果是这样的话,我不确定我是否理解Ember数据的意义,我更愿意使用手动HTTP请求。您可以使用
controller.setProperties(models)