ПОСЛЕДНИЙ РЕДАКТИРОВАТЬ: Попробуйте Tracker.afterFlush
в обратном вызове на подписку.Метеор: подождать коллекцию со стороны клиента
EDIT: сортировка не была проблемой, это была новая подписка на одну и ту же коллекцию с новой переменной сеанса. Проблема возникла из-за того, что Meteor не ударил старые документы, прежде чем запускать callback-onReady callback ...
У меня есть помощник Meteor, который возвращает отсортированную коллекцию (сопоставленные документы). Это выглядит следующим образом:
"currentNames": function() {
if (Session.get("sortBy") === "rating") {
return MyCollection.find({'name': {$exists: true}}, {sort: {rating: -1}}).map(function (document, index) {
document.index = index;
return document;
});
}
else if (Session.get("sortBy") === "alphabet") {
return MyCollection.find({'name': {$exists: true}}, {sort: {name: 1}}).map(function (document, index) {
document.index = index;
return document;
});
}
}
Рода работает красиво. У меня есть шаблон с помощью этого помощника в {{#each currentNames}}
-loop, который также работает. Но когда я меняю тип сортировки, меняя поле сеанса sortBy
, мои показанные результаты (html-dom-elems) полностью крутятся (изменяя их позиции), пока они не найдут свой окончательный вид. Я говорю о 100 документах в коллекции, которую я сортирую.
Поскольку я не хочу, чтобы мои пользователи видели этот процесс сортировки вживую, я хочу подождать, пока сортировка закончится. Но я не могу найти способ подождать, пока сорт не закончится. Я знаю, когда скрывать результаты (это когда изменяется переменная сеанса sortBy
), но у меня нет обратного вызова или что-то еще, когда сортировка завершена. Но мне это нужно.
Благодарим вас за внимание! Надеюсь, ты поможешь мне.
Я не думаю, что это действительно отвечает на мой вопрос, потому что обратный вызов, готовый к подписке, запускается перед сортировкой. – ant45de