像这里的许多其他用户一样,我对el
和事件有一个问题。在我的情况下,我已经测试了多种解决方案,包括使用默认的el
(只是<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
传递给构造函数,但没有成功。
对不起,我对coffeescript不满意,尽管我认为我识别出了您的事件哈希
events: {
"click div" : "testing"
}
和我打赌你试图绑定这个测试函数到点击你的一般视图元素?这就是问题。
你的click事件实际做的(选择器方面)是:
$('div', viewElement).click(fn);
的意思是,你不针对viewElementdiv,但div的内部视图元素。
如果你想绑定到通用视图元素本身,定义一个没有选择器的事件
在你的例子中:
events: {
"click" : "testing"
}