如何为视图添加动态事件

How to add dynamic events for view?

本文关键字:动态 事件 添加 视图      更新时间:2023-09-26

如何在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"}事件,但不知何故,{"lick a.changeLink":"clearSelect"}并没有出现问题。

有人知道解决办法吗?

谢谢,Rohan

Backbone会自动委派视图的events属性中的事件。您正在覆盖以前委派的事件。您可以调用$(this.el(.delete(…(,但也可以执行

this.delegateEvents(_.extend(this.events, {'click select': 'changeSelect'}));

由于我经常这样做,下面是我的小型骨干扩展(基于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()