如何在Backbone.js的视图类中添加动态事件
我有一个View类,包含
var myViewClass = Backbone.View.extend({
events: {
'change select': 'changeSelect',
'click a.changeLink': 'clearSelect'
},
initialize: function() {
this.delegateEvents({'click select': 'changeSelect'});
},
.
.
.
});
这是添加{'click select':'changeSelect'}事件,但不知何故{'click a.changeLink':'clearSelect'}没有运行。
有人知道解决方案吗?
谢谢,罗翰
发布于 2011-07-01 03:01:12
Backbone自动从视图的事件属性委派事件。您正在覆盖以前委派的事件。您可以调用$(this.el).delegate(...)但是你也可以这样做
this.delegateEvents(_.extend(this.events, {'click select': 'changeSelect'}));
发布于 2012-10-26 03:30:47
由于我经常这样做,下面是我的小主干扩展(基于Julien的答案和我的测试):
Backbone.View.prototype.addEvents = function(events) {
this.delegateEvents( _.extend(_.clone(this.events), events) );
};
使用:
BaseResizable.View = Base.View.extend({
initialize: function() {
Base.View.prototype.initialize.call(this);
this.addEvents({
'resizestop': 'resizeStop'
});
},
resizeStop: function(event, ui){...}
}
如果您使用undelegateEvents()
,您将不得不再次执行addEvents()
。
https://stackoverflow.com/questions/6537848
复制相似问题