正如我从文档中了解到的,模板是在Deps自动运行中呈现的, 并且所有状态改变的停止/订阅将由它维持,例如如果abc.elements是 多次打电话。
从屏幕上删除模板后,订阅也会停止或 我是否必须在Template.destroy方法中手动删除它?
[server.js]
Elements = new Meteor.Collection('Elements);
Meteor.publish('allElements', function() {
this.onStop( function() {
console.log('allElements.stop');
});
return Elements.find({});
});
[client.js]
Elements = new Meteor.Collection('Elements);
Template.abc.elements = function() {
Meteor.subscribe('allElements);
return Elements.find({});
}
[html]
<template name='abc'>
{{#each elements}}
...
{{/each}}
</template>
答案 0 :(得分:1)
当您更改/离开模板时,订阅仍将保留。摆脱它们并不是完全必要的。如果您返回页面,内容将更快准备好。
如果你想要阻止它们,你可以将它们放在destroy
方法中。如果您正在使用某种路由器,最好将其放入其中一个挂钩中,以便在您访问该页面之前准备就绪。
除非您在发布中使用带有参数的本地化查询,否则无需取消订阅。 e.g
Meteor.publish("data", function(page) {
return Data.find({page:page});
});
在上文中,您需要重新订阅每个页面的内容。但我怀疑你不是这样做的?