javascript – 删除了Backbone视图DOM元素
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 删除了Backbone视图DOM元素,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1180字,纯文字阅读大概需要2分钟。
内容图文
![javascript – 删除了Backbone视图DOM元素](/upload/InfoBanner/zyjiaocheng/764/31d8d0c2a0f442d2a01a4a1bd82113cd.jpg)
我一直在阅读Backbone.js僵尸(或内存泄漏)问题.基本上,当您不再需要它以确保所有事件都被删除时,您必须解除绑定并从DOM中删除该元素.
现在,我有一个带有几个容器的单页应用程序:
<div id="page1"></div>
<div id="page2"></div>
并将我的underscore.js模板添加到这些占位符.我每页有一个模型,如:
HomeView = Backbone.View.extend({
el: '#page1'
)}
现在,当我点击该页面上的一个元素时,我导航到另一个Backbone.js视图:
clicked: function(ev){
$(this.el).remove(); // <-- this is the problem
$(this.el).unbind();
App.navigate('page/2', true);
}
这工作正常但是……我从DOM中删除了page1元素,所以当我使用后退按钮转到上一页时,我的元素消失了,没有任何内容可以附加HTML.
我可能不明白如何将Backbone.js视图与DOM链接…我应该保持元素存在内存泄漏的风险吗?
谢谢!
解决方法:
正如文章所说,(是的,我之前在我自己的项目中尝试过他的方法),你必须找到一种方法来删除视图的DOM元素并取消绑定事件.
但是,有两种类型的事件,1)Backbone事件,2)使用jQuery绑定到DOM元素的事件.
而不是你的:
$(this.el).remove();
$(this.el).unbind();
做这个:
this.remove();
this.unbind();
您现在也正在删除Backbone事件;并且视图中的this.remove将调用$(this.el).remove();.
但是,这只是如何删除视图而不是留下僵尸.你应该考虑他的方法来显示一个视图,使这个过程更自动化.
这一切都在他的文章中.
内容总结
以上是互联网集市为您收集整理的javascript – 删除了Backbone视图DOM元素全部内容,希望文章能够帮你解决javascript – 删除了Backbone视图DOM元素所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。