2013-04-29 3 views
0

Внутри Метеора, я хотел бы изменить порядок коллекции, которая визуализируется внутри цикла динамически:Метеор - изменение помощник инкассовой сортировки после рендеринга

Template.chartPage.helpers({ 

    employee:function(){ 

     sortArr = []; 
    var timePeriod = Session.get("period"); 
    var currentPage = Session.get("current_page"); 
     sortArr[currentPage+'.'+timePeriod] = "asc"; 
     return EmployeeCollection.find({}, sortArr).fetch(); 
    }, 
}); 

HTML:

{{#each employee}} 
    {{first_name}} 
{{/each}} 

Я хочу это так, что когда переменная сеанса для period и current_page изменится, также порядок сортировки в хелпере - переменные сеанса получают обновление, но шаблон не переименовывается в сортировку.

ответ

1

В метеоритах база данных (на данный момент) основана на mongodb. По возрастанию 1 и по убыванию -1. Ваш окончательный массив должен быть что-то вроде:

return EmployeeCollection.find({}, {sort : {number: -1, size: 1} }) 

вы должны получить следующий заказ (каждая строка представляет собой документ) с полем number и size.

{ number : 5, size: 1, _id: ...} 
{ number : 4, size: 2, _id: ...} 
{ number : 3, size: 3, _id: ...} 

Более подробную информацию о том, как заказать с MongoDB в: http://docs.mongodb.org/manual/reference/method/cursor.sort/

На другой ноте вы не должны использовать fetch() при возврате курсора в качестве помощника шаблон. Метеор автоматически анализирует его без необходимости проходить через массив (с извлечением)

Вы можете построить запрос сортировки с помощью Session, поскольку вы до тех пор, пока следуете этой структуре. Как только вы измените хэш-код Session, заказ будет автоматически изменен и повторно отображен.

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