我通过route.js中的模型从API中获取了一些数据。这个数据包含一个自己的id,没有关系或包含东西来获取细节。所以我必须发出另一个API请求来获取具有该id的对象。
我用一个组件做了它(为了能够发送id参数)并且它有效,但我想知道这是否可行,如果是,如果我做得对,它不能简化(因为对于这么简单的任务我看起来很复杂):
我使用{{resource-name id=evaluation.manager}}
组件模板只包含{{name}}
component.js:
import Ember from 'ember';
export default Ember.Component.extend({
store: Ember.inject.service(),
_getResource(id) {
return this.get('store').findRecord('resource', id);
},
resource: Ember.computed('id', function() {
const id = this.get('id');
const proxy = Ember.ObjectProxy.extend(Ember.PromiseProxyMixin);
return proxy.create({
promise: this._getResource(id)
});
}),
name: Ember.computed('resource.isFulfilled', function() {
if (this.get('resource.isFulfilled')) {
return `${this.get('resource.lastName')} ${this.get('resource.firstName')}`;
}
else {
return "...";
}
}),
didReceiveAttrs() {
const id = this.getAttr('id');
Ember.assert('resource-name must have an "id" attribute!', !Ember.isBlank(id));
}
});