Meteor - 模板被销毁时停止跟踪器自动运行(用户离开页面)

时间:2014-11-14 07:36:01

标签: javascript mongodb meteor meteor-tracker

在我的Meteor模板中,我有一个名为ohlcInit()的函数,当Mongo中有新数据时,它会自动运行:

Template.Live.rendered = function(){

  function ohlcInit() {
    // computations run here
  }

  Tracker.autorun(function() {
      ohlcInit();
  });
};

当用户在页面/模板上进行定义时,这很有用,但只要用户导航到站点上的另一个URL并且模板被销毁,就会在控制台中抛出错误:

  

Tracker重新计算函数的异常:undefined不是函数   TypeError:undefined不是函数       at ohlcInit(http://localhost:3000/client/views/live/live.js?dd5fb618daf9ea9e233c37caaaa9ed200fe3e987:271:33)       在http://localhost:3000/client/views/live/live.js?dd5fb618daf9ea9e233c37caaaa9ed200fe3e987:306:5       在Tracker.Computation._compute(http://localhost:3000/packages/tracker.js?192a05cc46b867dadbe8bf90dd961f6f8fd1574f:288:36)       在Tracker.Computation._recompute(http://localhost:3000/packages/tracker.js?192a05cc46b867dadbe8bf90dd961f6f8fd1574f:302:14)       在Tracker.flush(http://localhost:3000/packages/tracker.js?192a05cc46b867dadbe8bf90dd961f6f8fd1574f:430:14

当用户导航到新的URL /模板时,如何安全地停止/结束自动运行计算?
我正在使用iron:router

1 个答案:

答案 0 :(得分:16)

使用新的Template.autorun函数,该函数在模板被销毁后自动清理。要在rendered回调中使用它,只需将Tracker.autorun替换为this.autorun