在我的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
。
答案 0 :(得分:16)
使用新的Template.autorun函数,该函数在模板被销毁后自动清理。要在rendered
回调中使用它,只需将Tracker.autorun
替换为this.autorun
。