Compare Meteor.subcribe() Vs this.subscribe() [Meteor + Blaz



我有两个页面/模板,

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

我正在使用带有火焰模板的流星 1.5。登陆页面是仪表板。我在两个模板中使用集合Users的通用订阅。

场景 1

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

法典:

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

场景 2

当我在仪表板的template.onCreated()中使用this.subscribe('Users')并转到"用户"页面时,我在此处收到一个新订阅,并且没有数据从仪表板的订阅中转移。

法典:

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 .

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

最新更新