【问题标题】:Compare Meteor.subcribe() Vs this.subscribe() [Meteor + Blaze]比较 Meteor.subscribe() 或 this.subscribe() [Meteor + Blaze]
【发布时间】:2018-04-07 13:59:32
【问题描述】:

我有两个页面/模板,

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

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

场景 1

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

代码:

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

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

场景 2

当我在 Dashboard 的 template.onCreated() 中使用 this.subscribe('Users') 并转到 用户 页面时,我在此处获得了新订阅,并且没有从 结转任何数据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 meteor-blaze


    【解决方案1】:

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

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

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

    如果数据在多个页面中使用,请使用“全局”表单,或在更高的模板级别(在您的页面中持续存在的模板级别,例如在布局上)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-09
      • 2014-05-27
      • 1970-01-01
      • 2015-02-14
      • 2021-07-28
      • 2016-03-10
      • 2016-12-07
      • 1970-01-01
      相关资源
      最近更新 更多