Meteor.subscribe()属于哪里?

时间:2015-02-03 02:48:40

标签: meteor meteor-publications

我刚注意到我的JS文件顶部的订阅代码“Meteor.subscribe('my-publications')”会影响我的所有模板,而不仅仅是创建JS文件的模板。

这是出乎意料的,因为所有的演示都是这样做的。

如果我想让它只影响一个模板,那么订阅代码应该在哪里?在Template.name.created()里面?

1 个答案:

答案 0 :(得分:0)

不要假设minimongo中的唯一数据与您的模板相关。在为模板选择数据时要具体。

就订阅而言,您有多种选择,目前最常见的是添加订阅到路由定义的waitOn部分。使用waitOn将导致订阅在路线不再使用时取消订阅。

Router.map(function() { 
  this.route('route', {
    waitOn: function(){ return Meteor.subscribe("yourSub"; }
  });
});

您还可以为每个模板订阅。我为此目的创建的包可以通过

添加
meteor add elevatedevdesign:template-subscriptions

这种模式也将很快成为大火的一部分,但在你如何称呼它时会略有不同。当模板不再处于活动状态时,这将自动取消订阅。它还允许子模型管理员订阅模板销毁。