模板是否销毁和subscription.stop()?

时间:2013-11-04 15:19:27

标签: templates meteor subscription

正如我从文档中了解到的,模板是在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>

1 个答案:

答案 0 :(得分:1)

当您更改/离开模板时,订阅仍将保留。摆脱它们并不是完全必要的。如果您返回页面,内容将更快准备好。

如果你想要阻止它们,你可以将它们放在destroy方法中。如果您正在使用某种路由器,最好将其放入其中一个挂钩中,以便在您访问该页面之前准备就绪。

除非您在发布中使用带有参数的本地化查询,否则无需取消订阅。 e.g

Meteor.publish("data", function(page) {
    return Data.find({page:page});
});

在上文中,您需要重新订阅每个页面的内容。但我怀疑你不是这样做的?