首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何为view添加动态事件?

如何为view添加动态事件?
EN

Stack Overflow用户
提问于 2011-07-01 00:13:52
回答 2查看 5.6K关注 0票数 18

如何在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'}没有运行。

有人知道解决方案吗?

谢谢,罗翰

EN

回答 2

Stack Overflow用户

发布于 2011-07-01 03:01:12

Backbone自动从视图的事件属性委派事件。您正在覆盖以前委派的事件。您可以调用$(this.el).delegate(...)但是你也可以这样做

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

Stack Overflow用户

发布于 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()

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6537848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档