0

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

1 回答 1

1

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

但是,如果您想阻止它们,则可以将它们放入destroy方法中。如果您使用某种路由器,最好将其放入其中一个钩子中,以便在您访问页面之前准备好。

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

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

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

于 2013-11-04T16:32:57.960 回答