Ember.js сортировка и фильтрация дочерних элементов отношения hasMany в родительском маршруте

Обновление № 2

Я обнаружил, что когда я реорганизовал логику фильтрации, чтобы она выполнялась в составном вычисляемом свойстве в PostController, а не в отдельных маршрутах, я смог заставить его работать. В конечном итоге решение зависело от единственной динамической переменной, заданной конкретным действием маршрута #linkTo, которое вызвало изменения фильтрации в вычисляемом свойстве PostController. У меня много работы, чтобы наверстать упущенноеЯ не могу опубликовать решение этого конкретного вопроса сейчас, но когда смогу, я подробно опишу решение ниже. Пока я пометил @twinturbo 's правильный ответ на частичное, но невероятно полезное руководство, которое он дал ниже. Еще раз спасибо, человек! Очень признателен!!

Обновление № 1

Последняя скрипка наhttp://jsfiddle.net/aZNRu/14/ с @twinturbo 'помощь, сортировкаранг" Атрибут Комментариев в своем родительском контроллере Post работает вместе с базовой фильтрацией. Проблема с автоматическим обновлением представлений по-прежнему возникает при фильтрации по маршруту и создании нового комментария.

Оригинальный вопрос

я вижу эторечь идет о сочетании сортируемого миксина с фильтрацией, но пока, как вы можете видеть в моемпример jsfiddleЯУ меня проблемы с сортировкой и фильтрацией:

1) я могуt выяснить, как сортировать по определенному дочернему атрибуту в контроллере его родителя. Если у нас есть:

App.Post = DS.Model.extend({
    title: DS.attr('string'),
    post: DS.attr('string'),
    comments: DS.hasMany('App.Comment')
});

App.Comment = DS.Model.extend({
    post: DS.belongsTo('App.Post'),
    description: DS.attr('string'),
    isActive: DS.attr('boolean'),
    rank: DS.attr('number')
});

App.Router.map(function() {
  this.resource("posts", { path: "/" }, function() {
    this.resource('post', { path: ':post_id' }, function() {
        this.route('active');
        this.route('inactive');
     });
   });
});

Я хочу иметь возможность сортировать каждый посткомментарии в порядке возрастанияранг" приписывать. Я хочу сделать что-то вроде:

App.PostController = Ember.ObjectController.extend({
    sortProperties: ['comments.rank']

но, например, sortProperties работает только на arrayControllers, и я неЯ думаю, что он может работать более чем на один уровень. Как я мог этого добиться?

2) Вторая проблема - не получить автоматически обновляемые представления при отфильтрованном маршруте. Например, если вы просматриваете jsfiddle и переходите к активному отфильтрованному маршруту, нажав «Активные комментарии " Вы получаете хороший эффект фильтрации на текущих данных. Но если вы остаетесь в активном маршруте и создаете новую активную запись, нажав «Добавить новый комментарий " запись не отображается автоматическиАктивный,» и появляется, только если вы щелкнете по другому маршруту и вернетесь к нему.

Я неправильно настраиваю фильтрацию маршрута в маршруте или неправильно указываю в шаблоне?

App.PostActiveRoute = Ember.Route.extend({
  setupController: function() {
    var post = this.controllerFor('post').get('model'),
    comments = post.get('comments');

    var activeComments = comments.filter(function(comment) {
      if (comment.get('isActive')) { return true; }
    });

    this.controllerFor('post').set('filteredComments', activeComments);
  }
});



    {{#each comment in filteredComments}}
        {{comment.rank}} {{comment.description}} - isActive: {{comment.isActive}}
    {{/each}}

Будем очень благодарны за любые идеи, которые вы можете дать по этим вопросам!

Ответы на вопрос(3)

Ваш ответ на вопрос