@lands_of_infinity

Как реализовать вычислительные свойства и агрегированные данные для подкатегорий и записей из связаной модели?

Есть две модели категории и расходы:

models/category.js
import DS from 'ember-data';

export default DS.Model.extend({
    name: DS.attr('string'),
    parent_id: DS.attr('number'),
    rashody: DS.hasMany('rashody')
});


models/rashody.js
import DS from 'ember-data';

export default DS.Model.extend({
    date: DS.attr('string'),
    count: DS.attr('number'),
    category: DS.belongsTo('category')
});


Как правильно:

1. Реализовать подкатегории (здаеться мне хранить значение parrent_id не самый правильный вариант).

2. Создать для category "Вычислительные свойства и агрегированные данные с @each (Computed Properties and Aggregate Data with @each)" которое будет возвращать сумму полей rashody.count связанных с категорией и ее подкатегориями
  • Вопрос задан
  • 110 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Makito
По поводу 2 посмотрите тут, у меня недавно сходный вопрос был. Вы, я так понимаю, пилите сервис учета финансов?
Ответ написан
@lands_of_infinity Автор вопроса
Решил таким вот способом:

models/category.js
export default DS.Model.extend({
    name: DS.attr('string'),
    rashody: DS.hasMany('rashody',{ async: true }),
  
    parentCategory: DS.belongsTo('category', {inverse: 'subCategory'}),
    subCategory: DS.hasMany('category', {inverse: 'parentCategory'}),
  
    //расходы по категории
    rashCount: function(){
      var val = 0;
      this.get('rashody').forEach(function(rashod){
        val += rashod.get('count');
      });
      return val;
    }.property('rashody.@each.count'),
  
    // расходы по категории и дочерним категориям
    subcatRashCount: function(){
      var subVal =0;
      this.get('subCategory').forEach(function(subCat){
        subVal += subCat.get('subcatRashCount');
      });
      return subVal+ this.get('rashCount');
    }.property('subCategory.@each.subcatRashCount', 'rashCount')
   
});


Теперь непонятно как вывести в шаблон категории и субкатегории.

Товары
-Продлвольственные
--Мука
--Молоко
-Хозяйственные
--Мыло
--Порошок
Услуги
-Химчистка
...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы