Templates 您如何将订阅管理器与meteor';s模板订阅?
Meteor最近引入了模板订阅功能。现在,您可以在Templates 您如何将订阅管理器与meteor';s模板订阅?,templates,meteor,publish-subscribe,Templates,Meteor,Publish Subscribe,Meteor最近引入了模板订阅功能。现在,您可以在Temeplate.xyz.onCreated调用中调用this.subscribe,并且助手{{{if Template.subscriptionsReady}}仅在从服务器准备好订阅后才为真 不幸的是,这似乎与或不明显兼容 您如何使用subs缓存来代替此.subscribe,以便Subscriptions管理器生成的订阅ID将其放入此.subscribe的_subscriptionHandles和_allsubscribe部分?或者问,如何使
Temeplate.xyz.onCreated
调用中调用this.subscribe
,并且助手{{{if Template.subscriptionsReady}}仅在从服务器准备好订阅后才为真
不幸的是,这似乎与或不明显兼容
您如何使用subs缓存来代替此.subscribe,以便Subscriptions管理器生成的订阅ID将其放入此.subscribe的_subscriptionHandles和_allsubscribe部分?或者问,如何使{{#if Template.subscriptionsReady}和函数Template.instance().subscriptionsReady()依赖于使用subs缓存进行的模板订阅
不起作用的示例代码:
# in some top level file
share.subsCache = new SubsCache(
expireAter: 5
cacheLimit: 10
)
#in a template file
Template.entryRevisionInfo.onCreated ->
share.subsCache.subscribe('somePub')
meteor的应用程序有一个连接到TemplateInstance订阅的选项,我希望你能够通过订阅管理器作为“连接”。Sacha Greif在应用程序中编写了一个解决方案。我试图提取对下面的基本实现非常重要的部分。据我所知,它依赖于显式设置模板的就绪状态。。。订阅准备就绪时以反应方式设置它:
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);
}
}
}
你找到解决这个问题的办法了吗?不,对不起,我没有,不过我会增加一笔赏金,看看这是否能给你带来什么好处