我有两个页面/模板,
- 仪表板(还包含一些用户特定的数据(。
- 用户。
我正在使用带有火焰模板的流星 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
.
如果数据跨多个页面使用,请使用"全局"表单,或者将范围限定在更高的模板级别(在页面中持续存在的模板级别,例如在布局上(。