はここに私の簡素化の状況、です:私の製品テンプレートでhasMany関係から1レコードを取り出すためのEmber計算プロパティー?
// 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}}
がどのように私は行くだろうcheapestSource計算されたプロパティを設定することについて?私はこのような何かしなければならないだろうと想像:
// 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;
})
問題があるが、私はどのように(離れてハンドル{{#each}}ヘルパーを使用してから)hasManyの関係をループに少し考えを持っており、計算されたプロパティが他のモデルからの単一のEmber Dataレコードで構成されることができるかどうか。ソースは@それぞれ何かがこれに参加していますか?
ご協力いただきありがとうございます。
私はこの[約束としての関係](https://guides.emberjs.com/v2.11.0/models/relationships/#toc_relationships-as-promises)のガイドを読んでいます。あなたがやっているように直接アクセスできますか?可能であれば答えを説明してください。私の学習のために。また、従属キー 'priceSources. @ each.price'も有用かもしれません。 – kumkanillam
コントローラでこれをやりましたが、なぜこの質問をしたのか、彼はチェックのためにモデルthxでそれを行いました。 –
@ Sedad.Kosovac残念ながら、(Ember Inspectorの)priceSourceオブジェクトが表示されていません。私は間違いがない。私は 'return this.get( 'priceSources.firstObject')'を返そうとしましたが、返すthis.get( 'priceSources')。get( 'firstObject') 'も試みました。 とにかくソースをソートする必要があるので、最も安価なソースを取得するより良い方法は、最初にソートしてから、sortedSources計算プロパティでfirstObjectを取得することです。 –