Javascript Meteor-模板销毁时停止跟踪程序自动运行(用户离开页面)
在Meteor模板中,我有一个名为Javascript Meteor-模板销毁时停止跟踪程序自动运行(用户离开页面),javascript,mongodb,meteor,meteor-tracker,Javascript,Mongodb,Meteor,Meteor Tracker,在Meteor模板中,我有一个名为ohlcInit()的函数,当Mongo中有新数据可用时,该函数将自动运行: Template.Live.rendered = function(){ function ohlcInit() { // computations run here } Tracker.autorun(function() { ohlcInit(); }); }; 当用户位于定义了所有这些内容的页面/模板上时,这非常有效,但是一旦用户导航到站
ohlcInit()
的函数,当Mongo中有新数据可用时,该函数将自动运行:
Template.Live.rendered = function(){
function ohlcInit() {
// computations run here
}
Tracker.autorun(function() {
ohlcInit();
});
};
当用户位于定义了所有这些内容的页面/模板上时,这非常有效,但是一旦用户导航到站点上的另一个URL并且模板被销毁,控制台就会抛出错误:
跟踪器重新计算函数异常:未定义不是函数
TypeError:undefined不是函数
在ohlcInit()
在
在Tracker.compute.\u compute()
在Tracker.Computation.\u重新计算()
在Tracker.flush()处
当用户导航到新的URL/模板时,如何安全地停止/结束自动运行计算?我使用的是
iron:router
使用新功能,该功能在模板销毁后自动清理自身。要在呈现的
回调中使用它,只需将Tracker.autorun
替换为this.autorun谢谢!刚刚在Meteor github repo中看到了同样的解释:我遇到了上述相同的问题,但我在客户端上的Meteor方法回调中启动了我的Tracker.autorun
调用。我正在服务器上启动一个进程,如果启动进程没有错误,则需要侦听一些数据库值。他们的工作很好,除了我得到同样的上述错误时,销毁模板。使用this.autorun
在回调范围内不起作用。我假设由于范围问题,无法在.destrocted
中调用stop。我找到了答案。在调用Meteor方法之前,只需要在正确的范围内设置一个var template=template.instance()
。然后在回调代码中调用template.autorun(函数…
引用上述变量效果很好。您好@DavidWeldon,,您能举个简单的例子吗?。?我已经阅读了文档,但不理解,,@KarinaL,请查看我对和的回答。希望这些会有所帮助。如果您有一些特定的代码无法使用,我建议您提出一个新问题。