Meteor.subscribe() 属于哪里?

Where does Meteor.subscribe() belong?

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

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

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

里面

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

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

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

您也可以按模板订阅。可以通过

添加我为此目的创建的包
meteor add elevatedevdesign:template-subscriptions

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