码迷,mamicode.com
首页 > 其他好文 > 详细

backbone出现重复绑定,el上绑定数据没有及时解除

时间:2014-08-20 16:15:22      阅读:302      评论:0      收藏:0      [点我收藏+]

标签:数据   问题   html   htm   on   sp   c   简单   

昨天项目中出现了一个奇怪的现象,当从一个小页面(router路由跳转)到其他小页面,然后再跳转回来的时候,该页面上的事件被重复绑定了两次,例如绑定在button上面的submit事件触发两次,导致数据提交了两次,而跳转的次数越多,重复的次数也就越多,当遇到这个问题的时候,就想到了事件的重复绑定,但是因为每次该页面的VIEW都是

重新渲染的,HTML也是动态插入的,故而纠结了一会,最后老大出马,找到了根源所在,就是el,每次的操作虽然模板是手动插入的,但是el都是没有变动,而backbone的所有

事件都是通过事件监听绑定在el上的,events调用的是jq的on方法,ON则是通过事件委托实现,可以绑定重复的事件,当el中子节点重新渲染时,实际上绑定在el中的事件还存在

虽然backbone中有默认方法undelegate,每次intilizei的时候手动清除了el的事件,但是他清除的只是当前的cid事件,而不能清除上一个cid事件(看源码)....

最后解决的办法很简单,手动$el.off(),每次初始化的时候,手动清除el上的所有事件即可。因为新的事件绑定是在initilize之后执行的,故而不用担心被清空.

 

新人新帖,有错请指正

backbone出现重复绑定,el上绑定数据没有及时解除,布布扣,bubuko.com

backbone出现重复绑定,el上绑定数据没有及时解除

标签:数据   问题   html   htm   on   sp   c   简单   

原文地址:http://www.cnblogs.com/ccjs/p/3924659.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!