1

像这里的许多其他用户一样,我对el事件有疑问。在我的情况下,我测试了多种解决方案,包括使用默认el(just <div></div>)设置tagName、使用 jQuery 选择器设置el为选择器并等待 DOM 准备好。这些解决方案中的每一个都未能绑定事件以及除默认之外的所有事件,el并且tagName未能生成 html。相关代码:

看法

$ ->
   class Aggregator.Views.Streams.StreamView extends Backbone.View
      template:JST["backbone/templates/stream"]
      el: $('.item')
      events:
       "click div" : "testing"
      initialize: (model)->
       console.log @el
       _.bindAll this , 'render'
       @model.bind 'change', @render
       @model.view = @
       @render()
       @delegateEvents()
      render: ->
       $(@el).html  "test"
       console.log @el
       @
      testing: ->
       alert "EVENT"
       #@model.clear()

调用视图的函数(从另一个视图中提取)

view = new Aggregator.Views.Streams.StreamView({model: stream})
    console.log view.el
    $(@el).append view.render().el

我有点困惑,我已经设置el了,但它要么不创建,要么不绑定事件。我尝试等待 DOM 加载并传递el给构造函数,但没有成功。对我最可能明显的错误的任何帮助将不胜感激。

4

1 回答 1

6

抱歉,我对咖啡脚本不满意,尽管我想我认出了你的事件哈希

events: {
  "click div" : "testing"
}

我敢打赌,您正在尝试将此测试功能绑定到单击您的一般视图元素?有问题。

您的点击事件实际执行的操作(选择器)是:

$('div', viewElement).click(fn);

意思是,您的目标不是 viewElement div,而是 div 的 INSIDE 视图元素。

如果你想绑定到通用视图元素本身,定义一个没有选择器的事件

在你的情况下:

events: {
  "click" : "testing"
}
于 2011-12-09T23:35:54.790 回答