Вот моя ситуация, упрощена:Выброшенное свойство Ember для извлечения одной записи из отношения hasMany?
// 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}}
Как я пошел бы о настройке самого дешевого источника энергии? Я полагаю, я должен был бы сделать что-то вроде этого:
// 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 Data из другой модели. Есть ли источники. @ Каждый как-то играет в это, если да, то как?
Любая помощь и идеи оцениваются, спасибо.
Я читаю это [отношения, как обещает] (https://guides.emberjs.com/v2.11.0/models/relationships/#toc_relationships-as-promises) руководство. можем ли мы получить к нему доступ прямо так, как вы делаете? если возможно, объясните в своем ответе. Просто для моего обучения. спасибо. И также зависимый ключ 'priceSources. @ each.price' может быть полезен. Я удалю свой комментарий после того, как вы прочитали – kumkanillam
Я сделал это на контроллере, теперь я понимаю, почему вы задаете этот вопрос, он сделал это в модели thx для проверки. –
@ Sedad.Kosovac К сожалению, объект priceSource не отображается (в Ember Inspector). Я не получаю ошибок. Я попробовал 'return this.get ('priceSources'). Get ('firstObject')', также попробовал 'return this.get ('priceSources.firstObject')', но нет. Поскольку мне нужны источники, отсортированные в любом случае, лучший способ получить самый дешевый вариант - это, вероятно, сначала отсортировать, а затем извлечь firstObject в вычисленное свойство sortedSources. –