你如何使用订阅管理器与meteor的模板订阅?

fun*_*eah 13 templates publish-subscribe meteor

Meteor最近推出了模板订阅功能.您现在可以this.subscribeTemeplate.xyz.onCreated调用中进行调用,只有订阅从服务器准备好后,帮助程序{{#if Template.subscriptionsReady}}才会成立.

不幸的是,这似乎与subs-managersubs-Cache明显不兼容

你是如何使用sub-Cache替代this.subscribe的,以便subsciptions manager制作的订阅ID将它变成_subscriptionHandles和_allSubsReady这个.subscribe的一部分?或者以其他方式询问,您如何获得{{#if Template.subscriptionsReady}}和函数Template.instance().subscriptionsReady()依赖于使用subs-Cache进行的模板订阅.

示例代码不起作用:

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

#in a template file
Template.entryRevisionInfo.onCreated ->
  share.subsCache.subscribe('somePub')
Run Code Online (Sandbox Code Playgroud)

fun*_*eah 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);
     }
   }
}
Run Code Online (Sandbox Code Playgroud)