我刚刚注意到我的 JS 文件顶部的订阅代码“Meteor.subscribe('my-publications')”会影响我的所有模板,而不仅仅是为其创建 JS 文件的模板。
这是出乎意料的,因为所有的演示都是这样做的。
如果我希望它只影响一个模板,订阅代码应该在哪里?在 Template.name.created() 内部?
我刚刚注意到我的 JS 文件顶部的订阅代码“Meteor.subscribe('my-publications')”会影响我的所有模板,而不仅仅是为其创建 JS 文件的模板。
这是出乎意料的,因为所有的演示都是这样做的。
如果我希望它只影响一个模板,订阅代码应该在哪里?在 Template.name.created() 内部?
不要假设 minimongo 中的唯一数据是与您的模板相关的数据。在为模板选择数据时要具体。
就订阅而言,您有多种选择,目前最常见的是将订阅添加到waitOn
您的路线定义部分。waitOn
当路由不再使用时,使用将导致订阅被取消订阅。
Router.map(function() {
this.route('route', {
waitOn: function(){ return Meteor.subscribe("yourSub"; }
});
});
您也可以按模板订阅。我为此目的创建的包可以通过
meteor add elevatedevdesign:template-subscriptions
这种模式也将很快作为 blaze 的一部分出现,但在你如何称呼它时会有一些细微的差别。当模板不再活动时,这将自动取消订阅。它还允许在模板销毁时订阅 subs-manager。