2011-12-09 62 views
1

像许多其他用户在这里我有'el'和事件的问题。在我的情况下,我测试了多个解决方案,包括使用默认el(只是'')设置tagName,将el设置为使用jQuery选择器的选择器并警告DOM准备就绪。这些解决方案中的每一个在绑定事件时都失败了,除了默认的el和tagName在生成html时都失败了。 相关代码 查看骨干动态创建'el'不绑定事件

$ -> 
    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传递给构造函数,但没有成功。任何帮助,我最可能的明显错误,将不胜感激。

回答

6

,对不起,我不舒服的CoffeeScript,但我想我知道是你的事件哈希

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

,我敢打赌,你正在试图绑定您的一般视图元素在这个测试功能,点击? 有问题。

你的点击事件实际上没有(选择明智)是:

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

意思,你不针对viewElement格但div的INSIDE视图元素。

如果要绑定到普通视图元素本身

, 定义事件没有选择

你的情况:

events: { 
    "click" : "testing" 
} 
+0

的作品!我假设“点击”将相对于文档而不是视图元素。感谢您的解释。 –

+1

好吧,假设是错误的,事件哈希总是在视图的元素范围内,因此,没有任何内容的点击将绑定到埃尔本身,点击后面的东西将在埃尔内搜索。 – Sander