如何在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'}并不是很明智。
有谁知道解决方案?
谢谢, 罗汉
答案 0 :(得分:18)
Backbone自动委托视图的events属性中的事件。您正在覆盖先前委派的事件。你可以调用$(this.el).delegate(...)但你也可以这样做
this.delegateEvents(_.extend(this.events, {'click select': 'changeSelect'}));
答案 1 :(得分:2)
由于我做了很多,这是我的小骨干扩展(基于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){...}
}
如果您使用addEvents()
,则必须再次undelegateEvents()
。