2013-04-29 2 views
1

Я пытаюсь вернуть подсчеты для связанных объектов в моем контроллере ember.Подсчет объектов вложенных ассоциаций в ember.js

у меня есть:

App.Comment = DS.Model.extend({ 
    discussion: DS.belongsTo('App.Discussion') 
}); 

App.Discussion = DS.Model.extend({ 
    meeting: DS.belongsTo('App.Meeting'), 
    comments: DS.hasMany('App.Comment') 
}); 

App.Meeting = DS.Model.extend({ 
    discussions: DS.hasMany('App.Discussion') 
}); 

Теперь в моем контроллере Meeting я хочу вернуться отсчетами для обсуждения и комментариев, связанное с этой встречей:

App.MeetingController = Ember.ObjectController.extend({ 
    discussionCount: function(){ 
     return this.get('discussions.length'); 
    }.property('discussions') 
}); 

я могу получить обсуждение в порядке, но я не могу не найти способ получить соответствующие комментарии обсуждений, связанных с каждой встречей. Любые идеи, как это лучше всего сделать?

+0

вам не нужно конвертировать 'ManyArray' App.MeetingController = Ember.ObjectController.extend ({ discussionCount: функция() { возвращение this.get ('discussions.length');} .Property Свойство («обсуждения») }); –

+0

Спасибо, я отредактирую пример. Любая помощь с вложенной связью? – i0n

+0

что-то испытываю ;-) –

ответ

1

Я не знаю, сколько обсуждений и комментариев у вас есть, но это типично для проблемы выбора n + 1 (см. What is SELECT N+1?).

Существует реальная опасность для проблемы с производительностью.

Если вы не думаете, что это проблема, вы можете создать фильтр на itemController, чтобы получить все комментарии, связанные с собранием, а затем использовать этот массив для вычисления общего количества.

В противном случае вы можете кэшировать количество комментариев на серверной стороне обсуждения и добавить этот счетчик к модели App.Discussion.

Смежные вопросы