11

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

Template.Live.rendered = function(){

  function ohlcInit() {
    // computations run here
  }

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

当用户在定义了这一切的页面/模板上时,这很有效,但是一旦用户导航到站点上的另一个 URL 并且模板被破坏,控制台中就会抛出错误:

跟踪器重新计算函数的异常:未定义不是函数类型错误:未定义不是 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:28 ) ._recompute ( http://localhost:3000/packages/tracker.js?192a05cc46b867dadbe8bf90dd961f6f8fd1574f:302:14 ) 在 Tracker.flush ( http://localhost:3000/packages/tracker.js?192a05cc46b867dadbe8bf90dd961f6f8fd1 ) 561f6f8fd1 )

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

4

1 回答 1

16

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

于 2014-11-14T07:42:55.843 回答