如何从控制器正确访问 Ember 模型数据
How to correctly access Ember model data from controller
我正在使用 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 响应数据
然而,当我写 this.get('categories') 时,我得到的结果相当难看,是一个比我的 api 返回的对象复杂得多的对象:
"InternalModel" 条目包含从我的 api:
返回的 _data 属性中的实际数据
是否有更好的推荐方法来访问从我的 api 返回并通过关联路由传递给控制器的模型数据?我期望能够访问我的 api 返回的确切数据,如 this.get('categories') 并立即访问我的 api 发送的模型数据。
是的,这是正确的方法。 Ember 数据是 ember 的持久层,如果您不想,则不必使用它。但它非常有用,关键是要有一种通过模型对象访问数据的好方法。
在您的情况下,如果您循环遍历模型结果中的一个集合,您将获得包含您的数据的 ember 条记录。所以在控制器中你可以这样做:
this.get('categories').forEach(category => {
// Do something with category data, i.e.
console.log('Category name:', category.get('name'));
});
我正在使用 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 响应数据然而,当我写 this.get('categories') 时,我得到的结果相当难看,是一个比我的 api 返回的对象复杂得多的对象:
"InternalModel" 条目包含从我的 api:
返回的 _data 属性中的实际数据是否有更好的推荐方法来访问从我的 api 返回并通过关联路由传递给控制器的模型数据?我期望能够访问我的 api 返回的确切数据,如 this.get('categories') 并立即访问我的 api 发送的模型数据。
是的,这是正确的方法。 Ember 数据是 ember 的持久层,如果您不想,则不必使用它。但它非常有用,关键是要有一种通过模型对象访问数据的好方法。
在您的情况下,如果您循环遍历模型结果中的一个集合,您将获得包含您的数据的 ember 条记录。所以在控制器中你可以这样做:
this.get('categories').forEach(category => {
// Do something with category data, i.e.
console.log('Category name:', category.get('name'));
});