主干 动态创建的"el"不绑定事件



像这里的许多其他用户一样,我对el和事件有一个问题。在我的情况下,我已经测试了多种解决方案,包括使用默认的el(只是<div></div>)设置tagName,使用jQuery选择器设置el为选择器,并等待DOM准备好。这些解决方案在绑定事件时都失败了,除了默认的eltagName之外,所有解决方案都无法生成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传递给构造函数,但没有成功。

对不起,我对coffeescript不满意,尽管我认为我识别出了您的事件哈希

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

和我打赌你试图绑定这个测试函数到点击你的一般视图元素?这就是问题。

你的click事件实际做的(选择器方面)是:

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

的意思是,你不针对viewElementdiv,但div的内部视图元素。

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

在你的例子中:

events: {
  "click" : "testing"
}

最新更新