Javascript 主干事件委派事件名称问题

Javascript 主干事件委派事件名称问题,javascript,backbone.js,coffeescript,underscore.js,backbone-events,Javascript,Backbone.js,Coffeescript,Underscore.js,Backbone Events,我有一个足够简单的事件对象视图(在coffeescript中,因为它很甜) 我的活动不受约束。当我到达未统一的0.5.3 Backbone.js文件中的第967行时 delegateEvents : function(events) { //snip for (var key in events) { var method = this[events[key]]; if (!method) throw new Error('Event "' + events[k

我有一个足够简单的事件对象视图(在coffeescript中,因为它很甜)

我的活动不受约束。当我到达未统一的0.5.3 Backbone.js文件中的第967行时

delegateEvents : function(events) {
  //snip
  for (var key in events) {
    var method = this[events[key]];
    if (!method) throw new Error('Event "' + events[key] + '" does not exist');
    var match = key.match(eventSplitter);
    var eventName = match[1], selector = match[2];
    method = _.bind(method, this);
    eventName += '.delegateEvents' + this.cid;
    if (selector === '') {
      $(this.el).bind(eventName, method);
    } else {
      $(this.el).delegate(selector, eventName, method);  <-- THIS ONE
    }
  }
},
选择器是正确的,但我不确定为什么第963行的“click”字符串中有一个表示事件类型的附件。在用下划线绑定之前,该方法将读取为my
console.log
方法,因此这是正确的


最终结果是我的事件不会被触发。想知道我在这里连接错了什么。

事件名称
单击。delegateEventsView 8
实际上是jQuery事件的正确值。主干网使用jQuery的命名空间事件功能。()

主干网使用名称空间事件,因此它可以轻松解除在其
undelegateEvents
函数中添加的所有事件的绑定。通过使用名称空间,主干网可以确保它只解除它添加的事件的绑定。这样,它就不会解除它没有添加的任何事件的绑定

undelegateEvents : function() {
  $(this.el).unbind('.delegateEvents' + this.cid);
},
至于为什么事件没有被触发,我不知道

在将模板渲染到视图的
el
后,尝试在渲染方法中手动添加单击事件,然后查看是否调用该事件。如果没有,那么您知道选择器有问题

render: function() {
  $(this.el).append(//your template code)
  this.$('a').click(this.testFunction);
}

事件名称
click.delegateventsview8
实际上是jQuery事件的正确值。主干网使用jQuery的命名空间事件功能。()

主干网使用名称空间事件,因此它可以轻松解除在其
undelegateEvents
函数中添加的所有事件的绑定。通过使用名称空间,主干网可以确保它只解除它添加的事件的绑定。这样,它就不会解除它没有添加的任何事件的绑定

undelegateEvents : function() {
  $(this.el).unbind('.delegateEvents' + this.cid);
},
至于为什么事件没有被触发,我不知道

在将模板渲染到视图的
el
后,尝试在渲染方法中手动添加单击事件,然后查看是否调用该事件。如果没有,那么您知道选择器有问题

render: function() {
  $(this.el).append(//your template code)
  this.$('a').click(this.testFunction);
}

您是否在呈现模板后立即调用
this.delegateEvents()
?如果不使用
初始化
方法中的所有内容创建
This.el
,则需要执行此操作。为什么?因为只有在
initialize
方法之后才会自动调用
this.delegateEvents
。是否在呈现模板之后调用
this.delegateEvents()
?如果不使用
初始化
方法中的所有内容创建
This.el
,则需要执行此操作。为什么?因为只有在
初始化
方法之后才会自动调用
this.delegateEvents