【发布时间】:2013-06-19 11:35:46
【问题描述】:
我正在用backbone.js 开发一个小型Web 应用程序。在一个视图中,我使用 setInterval 方法来提供一些动画效果。我通过递增变量index 以3s 的间隔更改img 标签的src 属性。
问题是当我重新进入同一个视图时,索引变量在不到 3 秒的时间内递增。有时小于1s。
在重新渲染视图之前,我将使用以下代码关闭已经存在的视图以避免僵尸对象。
我的路由器
搜索页面:
function(data) {
if(!directory.myview){
directory.myview=new directory.SearchView({model:data});
}
else{
directory.myview.close();
directory.myview=new directory.SearchView({model:data});
}
// code to append the rendered view to html page comes here
}
我的观点
directory.SearchView = Backbone.View.extend({
render:function () {
this.$el.html(this.template(this.model));
return this;
},
close :function()
{
this.unbind();
this.remove();
delete this.$el;
delete this.el;
}
});
【问题讨论】:
-
你能说明你在哪里使用
setInterval方法吗? -
如果您使用
listenTo绑定事件,则不再需要close函数,View#remove将完成自 Backbone 0.9.9 以来所需的一切。但是,在使用clearInterval启动新方法之前,您是否真的停止了setInterval方法?如果不是,则仍然有对您删除的视图的引用,并且该视图不能被垃圾回收。 -
谢谢先生。 Loamhoof .. 我重新检查了 clearInterval 的代码。问题就在那里。 setInterval 的参考变量在 application 的一部分发生了变化。所以现在我正确设置了参考变量。并且工作正常
标签: javascript backbone.js setinterval backbone-views zombie-process