Лучший шаблон для организации моих подписок в Meteor без риска найти данные не готовыми

Я прочитал несколько сообщений здесь о том, как организовать подписки в Meteorjs, но я до сих пор не понимаю, как лучше всего избежать обнаружения того, что некоторые данные, на которые я подписался, не готовы для использования в шаблоне. Я использую Iron Router, и теперь все мои подписки организованы с помощью опции waitOn в Router.configure. Я обнаружил, что этот способ иногда не помогает. Если у меня есть несколько таких подписок:

Router.configure({
    layoutTemplate: 'layout',
    loadingTemplate: 'loading',
    waitOn: function () {
        return [
            Meteor.subscribe('channels'),
            Meteor.subscribe('invitations'),
            Meteor.subscribe('messages')
        ];
    } 
});

Я понял, что порядок имеет значение. Если я изменю порядок своих подписок в массиве, программа отреагирует по-другому. Что я хочу получить, так это то, что ВСЕ мои подписки полностью загружаются перед навигацией по приложению. Кто-то в предыдущем посте говорил о том, чтобы поместить их в отдельный файл, чтобы решить эту проблему. Но как? Куда мне нужно поместить этот файл? Я был бы признателен за некоторые примеры здесь для моего случая.


person massimosgrelli    schedule 17.03.2015    source источник


Ответы (1)


С выпуском Meteor 1.0.4 экземпляры шаблонов теперь имеют метод подписки, который работает точно так же, как Meteor.subscribe, проверьте в этом выпуске примечания к дополнительной информации о

Таким образом, вы можете использовать эти подписки внутри onCreated, как показано в следующем примере.

Template.notifications.onCreated(function () {
  this.subscribe("channels");
  this.subscribe("invitations");
  this.subscribe("messages");
});

Ознакомьтесь с документами Meteor о subscriptionsReady()

person Ethaan    schedule 21.03.2015
comment
Спасибо @Ethaan. Я проверил документацию Meteor 1.0.4, и подписки на уровне шаблона должны быть идеальными. Насколько я понимаю, срок действия каждой подписки на уровне шаблона истекает после уничтожения шаблона. Поэтому я предполагаю, что внутренним шаблонам не нужно снова подписываться на коллекцию, если внешние шаблоны уже сделали это за них. Это правильно? - person massimosgrelli; 23.03.2015
comment
Да, с подпиской на шаблон этого достаточно - person Ethaan; 23.03.2015
comment
Да, прости. Я забыл вернуться сюда. Сейчас я использую подписки на уровне шаблона, и все работает отлично. - person massimosgrelli; 16.04.2015
comment
@massimosgrelli, если этот ответ поможет вам, не могли бы вы принять этот? - person Ethaan; 16.04.2015
comment
Что вы имеете в виду под принять? Мне нужно, чтобы моя репутация была не менее 15, чтобы проголосовать за этот ответ. - person massimosgrelli; 17.04.2015
comment
о, проверьте, зеленый маркер находится чуть ниже 2 стрелок с репутацией, проголосовавшей за, - person Ethaan; 17.04.2015
comment
Все еще ломаю голову над тем, как использовать функцию subscribesReady() в контексте ожидания шаблона, пока подписки не будут готовы для него. Используется в железе-роутере? В рендерере шаблонов? Можете ли вы привести упрощенный пример? - person Wes Modes; 22.04.2015
comment
Привет, извините за беспокойство снова после того, как проблема была закрыта, но после использования этого в файле JS, как отобразить данные в файле HTML ?? - person monk; 17.05.2015