我正在寻找一种方法来使用jQuery的自定义小部件(用于封装我的UI组件以及内部状态和旨在用于外部DOM的自定义事件),以及我项目中精彩的“Backbone.js”框架.
我立即偶然发现的一个主要问题是,如果我将事件处理程序绑定到我的Widget的根元素(为了控制Widget的INTERNAL行为),然后将相同的元素设置为Backbone的View的根元素,Backbone将自动解除绑定现有事件(由我的Widget设置)并将其替换为View的“事件”哈希中指定的事件处理程序.
我立即偶然发现的一个主要问题是,如果我将事件处理程序绑定到我的Widget的根元素(为了控制Widget的INTERNAL行为),然后将相同的元素设置为Backbone的View的根元素,Backbone将自动解除绑定现有事件(由我的Widget设置)并将其替换为View的“事件”哈希中指定的事件处理程序.
所以,如果我在我的小部件声明中设置以下事件处理程序:
var el = this.element; el.bind("mouseenter",function (e) { el.css("backgroundImage","url(over.png)").addClass("selected"); }).bind("mouseleave","").removeClass("selected"); });
然后实例化我的backbone.js视图:
// "Participant"'s render() creates a DIV and initializes my widget on it var userView = new this.Views.Participant({ model: user }); $("#somediv").append(userView.render().el);
我的鼠标事件处理程序停止响应!
有没有办法让Backbone管理它自己的处理程序而不影响其他人?
解决方法
在backbone.js的开发版本中解决了这个问题(当前的稳定版本3.3仍然包含这个“bug”).您可以使用
https://github.com/documentcloud/backbone中的快照.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。