我刚注意到,当我在Meteor中执行Route.go()时,它会保留所有上一页的模板处理程序/事件/渲染JS代码。
例如,在Route.go()之前的前一页上,我每隔x秒运行一次setInterval(...)。
在Route.go()之后,这个setInterval继续触发,但是由于所需的元素不再存在,它只是一直产生错误。
这是设计的吗?我如何路由并开始新鲜?
注意:点击链接也是如此,因为从技术上讲,这也是一条路线(如果链接是作为路线创建的)
答案 0 :(得分:1)
如果您使用Meteor.setInterval()
设置间隔,则必须自行清除Meteor.clearInterval()
。
答案 1 :(得分:0)
使用Router.go与点击超链接或发出服务器端重定向并不相似。
期望Route.go像非绑定超链接(即物理发出新的GET请求)或发出服务器端301,但这不是铁的方式很常见路由器工作。
它将处理当前加载的窗口环境中的路径,通常使用HTML5 pushState交换URL但处理Meteor内部的路由。
这意味着任何现有的setIntervals或其他" global"除非您明确停止处理程序,否则事件将继续运行。