2011-12-09 70 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