【问题标题】:Does template destroy and subscription.stop()?模板会破坏和subscription.stop()吗?
【发布时间】:2013-11-04 15:19:27
【问题描述】:

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

【问题讨论】:

    标签: templates meteor subscription


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多