Meteor最近推出了模板订阅功能。您现在可以在this.subscribe
调用中调用Temeplate.xyz.onCreated
,只有订阅从服务器准备好后,帮助程序{{#if Template.subscriptionsReady}}才会成立。
不幸的是,这似乎与subs-manager或subs-Cache
显然不兼容你如何使用sub-Cache代替this.subscribe,以便subsciptions manager制作的订阅ID成为this.subscribe的_subscriptionHandles和_allSubsReady的一部分?或者以其他方式询问,您如何获得{{#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')
答案 0 :(得分:3)
meteor的next (unreleased) version对connection
有一个TemplateInstance#subscribe
选项,我希望您能够将订阅管理器作为“连接”传递。
答案 1 :(得分: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);
}
}
}