1

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

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

如果我希望它只影响一个模板,订阅代码应该在哪里?在 Template.name.created() 内部?

4

1 回答 1

0

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

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

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

您也可以按模板订阅。我为此目的创建的包可以通过

meteor add elevatedevdesign:template-subscriptions

这种模式也将很快作为 blaze 的一部分出现,但在你如何称呼它时会有一些细微的差别。当模板不再活动时,这将自动取消订阅。它还允许在模板销毁时订阅 subs-manager。

于 2015-02-03T03:19:21.523 回答