Backbone.js和jQuery-UI自定义Widget不能和平相处吗?

时间:2011-02-18 21:43:18

标签: events jquery-ui widget bind backbone.js

我正在寻找一种方法来使用jQuery的自定义小部件(用于封装我的UI组件以及内部状态和旨在用于外部DOM的自定义事件),以及我项目中精彩的“Backbone.js”框架。 我立刻偶然发现的一个主要问题是,如果我将事件处理程序绑定到我的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", function (e) { el.css("backgroundImage", "").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管理它自己的处理程序而不影响其他处理程序?

1 个答案:

答案 0 :(得分:1)

这个问题在backbone.js的开发版本中得到解决(当前的稳定版本3.3仍然包含这个“bug”)。您可以使用https://github.com/documentcloud/backbone中的快照。