比较 Meteor.subcribe() 与 this.subscribe() [流星 + 火焰]

Compare Meteor.subcribe() Vs this.subscribe() [Meteor + Blaze]

我有两个pages/Template,

  1. 仪表板(也包含一些用户特定数据)。
  2. 用户。

我正在使用带有 Blaze 模板的 Meteor 1.5。着陆页是仪表板。我在两个模板中都使用 Collection Users 的通用订阅。

场景一

当我在 仪表板的 template.onCreated() 中使用 Meteor.subscribe('Users') 并转到 Users 页面时,我已经看到了一些从 Dashboard 的 订阅返回的订阅数据。

代码:

Template.DashBoard.onCreated(function(){
    Meteor.subscribe('Users');
});

Template.Users.onCreated(function(){
    Meteor.subscribe('Users');
});

场景二

当我在 仪表板的 template.onCreated() 中使用 this.subscribe('Users') 并转到 Users 页面时,我得到了一个 Fresh此处进行订阅,没有数据从 Dashboard 的 订阅。

代码:

Template.DashBoard.onCreated(function(){
    this.subscribe('Users');
});

Template.Users.onCreated(function(){
    this.subscribe('Users');
});

问题

Meteor.subscribe('Users')this.subscribe('Users') 和有什么不一样?使用 this.subscribe('Users') 会产生什么影响?

如 Meteor 文档中所述,当模板实例被销毁时,模板代码中的 this.subscribe 将自动取消订阅。

Meteor.subscribe 如果您愿意,需要明确取消订阅。

使用其中一种取决于您的应用程序结构。如果您确定数据仅与给定模板相关,则使用模板范围订阅,即 this.subscribe.

如果跨多个页面使用数据,请使用 "global" 表单,或在更高的模板级别限定范围(在您的页面中持续存在的模板,例如在布局上)。