这是我的情况,简化:
// model/price-source.js
export default DS.Model.extend({
price: DS.attr('number'),
product: DS.belongsTo('product')
)};
// model/product.js
export default DS.Model.extend({
priceSources: DS.hasMany('price-source')
)};
在我的产品模板中,我希望能够简单地引用价格最低的来源,如下所示:
// templates/products.hbs
{{#each model as |product|}}
<span>{{product.cheapestSource.price}} €</span>
{{/each}}
我将如何设置最便宜的Source 计算属性?我想我必须做这样的事情:
// model/product.js
cheapestSource: Ember.computed('priceSources', function() {
let sources = this.get('priceSources');
let cheapest = sources.get('firstObject');
// iterate over sources and set cheapest to whichever has the lowest price
return cheapest;
})
问题是,我不知道如何遍历 hasMany 关系(除了使用把手 {{#each}} 帮助器),以及计算属性是否甚至可以包含来自另一个模型的单个 Ember 数据记录。sources.@each 是否以某种方式参与其中,如果是这样,如何?
感谢任何帮助和想法,谢谢。