Как вы могли бы использовать менеджеров подписки с подписками на шаблон 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')
Ответы
Ответ 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
, и я ожидаю, что вы сможете передать диспетчер подписки как "соединение".