Подтвердить что ты не робот

Как вы могли бы использовать менеджеров подписки с подписками на шаблон meteor?

Недавно Meteor представила возможности подписки на шаблоны. Теперь вы можете вызывать this.subscribe из вызова Temeplate.xyz.onCreated, а помощник {{#if Template.subscriptionsReady}} будет действителен только после того, как подписки будут готовы с сервера.

К сожалению, это, похоже, явно не совместимо с subs-manager или subs-Cache

Как вы используете суб-кэш вместо этого. Подпишите, чтобы идентификаторы подписки, сделанные менеджером подписок, превратили его в _subscriptionHandles и _allSubsReady часть this.subscribe? Или иначе спросите, как вы получаете {{#if Template.subscriptionsReady}} и функцию Template.instance(). SubscriptionsReady() зависит от подписки на шаблоны, сделанные с помощью суб-кэша.

Пример кода, который не работает:

# in some top level file
share.subsCache = new SubsCache( 
  expireAter: 5  
  cacheLimit: 10
)

#in a template file
Template.entryRevisionInfo.onCreated ->
  share.subsCache.subscribe('somePub')
4b9b3361

Ответ 1

Sacha Greif написал решение в Telescope. Я попытался извлечь части, существенные для базовой реализации ниже. Насколько я понимаю, он полагается на явную настройку готового статуса шаблона... настраивая его, когда подписка будет готова:

subsManager = new SubsManager();
Template.templatename.onCreated(function () {
   var instance = this;
   instance.ready = new ReactiveVar(false);
   subscription = subsManager.subscribe('yourCollection')
   instance.autorun(function () {
     if (subscription.ready()) {  //reactive
       instance.ready.set(true);
     }
   }
}

Ответ 2

следующая (неизданная) версия метеор имеет connection вариант TemplateInstance#subscribe, и я ожидаю, что вы сможете передать диспетчер подписки как "соединение".