2014-12-15 4 views
0

У меня есть шаблон, который использует {{#each}} для перебора всех элементов, и этот список упорядочен по имени в контроллере:Получить первый элемент списка после того, как заказал по имени

App.FoldersController = Ember.ArrayController.extend({ 
    sortAscending: true, 
    sortProperties: ['name'] 
}); 

я могу получить доступ к firstobject в этот список, сделав следующий звонок:

this.modelFor('folders').get('firstObject'); 

Но это возвращает первый элемент в первоначальном списке.

Как вернуть верхний элемент в списке after, который был заказан контроллером, например. первый элемент, отображаемый {{#each}}

ответ

1

У model все еще есть несортированные предметы. controller действует как декоратор на model и сортирует предметы.

Недвижимость в controller, которая оформлена model, является arrangedContent. Таким образом, вы можете сказать arrangedContent.firstObject

Смотрите следующий jsbin для рабочего примера - http://emberjs.jsbin.com/mizutu/2/edit

+0

В вашем примере вы получаете доступ это в шаблоне, но как я могу получить к нему доступ из внутри маршрута? 'this.controllerfor ('folders'). get ('orderedContent.firstObject')' не работает для меня. – Kiffin

+0

Следующие работы (после доступа к контроллеру папок) http://emberjs.jsbin.com/mizutu/4/edit?html,js,output – Kalman

+0

Спасибо, ближе, но не совсем правильно. В вашем примере вам нужно перейти на другой маршрут, а затем получить доступ к 'controllerFor', который слишком поздний. Тем не менее, я хочу иметь возможность выбрать самый верхний элемент в исходной точке маршрута. Если я сделаю это в маршруте в hook после afterModel, я получаю 'assemblyContent = []', потому что он еще не обработан. – Kiffin

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