2013-07-29 49 views
3
<!DOCTYPE HTML > 
<html> 
<head> 
    <meta charset="UTF-8"> 
    <title>Title</title> 
</head> 
<body> 

     <script src="jquery.js"> 
    </script> 

    <script src="underscore.js"> 

    </script> 
    <script src="backbone.js"> 
    </script> 
    <script> 
     var View = Backbone.View.extend({ 

      el: '#listen_to_box', 

      events: { 
       'click [type="checkbox"]':'clicked', 
      }, 
     clicked : function(event) { 
      console.log("events handler for "+ this.el.outerHTML); 
     } 
    }); 

    </script> 

    <div id="listen_to_box"> 
     <input type="checkbox" /> 
    </div> 

</body> 
</html> 

單擊該複選框時,單擊的函數沒有被調用,請幫助我將複選框上的單擊事件的監聽器函數關聯起來。謝謝骨幹視圖點擊複選框監聽器

回答

2

你的問題是當你定義你的View類時,你傳遞的是el,而不是在你實例化View類時傳遞它。試試這個:

var View = Backbone.View.extend({ 
    events: { 
     'click [type="checkbox"]': 'clicked', 
    }, 
    clicked: function (event) { 
     console.log("events handler for " + this.el.outerHTML); 
    } 
}); 

// Pass in el when instantiating the view 
new View({ 
    el: $("#listen_to_box") 
}); 

看到一個working fiddle here

+0

它不工作尚未:( –

6

你的代碼看起來很完美。您已經定義了Backbone View稱爲View和活動連接時嘗試創建視圖中的一個新的實例。所以該事件就未安裝..

只需創建一個新的實例,您的代碼應工作。

var view = new View();new View()應該做

Check Fiddle

你的代碼的頁面上遇到的元素之前運行。爲了使它工作,你要麼需要在結束標記之前移動代碼或包住裏面Document Ready handler

$(function() { 
    // Your code here 
}); 
+0

我試了一下,仍然不工作:(沒有任何東西在控制檯上點擊複選框打印:(請幫我解決這個問題 –

+3

看起來像你的腳本在元素出現在屏幕上之前運行..在'document.ready '事件 –

+0

非常感謝你Sushanth,現在的工作:)非常感謝你:) –

0
change to 
clicked: function (event) { 
    console.log("events handler for " + this.$el.outerHTML); 
} 

你的代碼看它是否有助於