我正在與backbone.js進入一個盲點。我寫了這段代碼,我試圖做的就是獲得 測試div在按鈕單擊時呈現。如果我在initialize()
函數內調用render()
,它會渲染。 但是,我從不觸發render()
函數來響應點擊事件。Backbone.js/Coffeescript - 映射簡單的點擊事件
我錯過了什麼?
謝謝!
HTML集裝箱
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8' />
<!--/Always force latest IE rendering engine (even in intranet) & Chrome Frame -->
<meta content='IE=edge,chrome=1' />
<meta http-equiv='X-UA-Compatible' />
<link type="text/css" rel="stylesheet" href="/stylesheets/site.css" media="screen" />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
<script type="text/javascript" src="/javascripts/underscore-min.js"></script>
<script type="text/javascript" src="/javascripts/backbone-min.js"></script>
<script type="text/javascript" src="/javascripts/application.js"></script>
<script type="text/javascript" src="/javascripts/sample_data.js"></script>
<title>The Middleman!</title>
</head>
<body class='page_classes'>
<div id='main' role='main'>
<h1>The Middleman is watching.</h1>
<div id='band-app'>
<button id='new-band'>new band</button>
</div>
</div>
</body>
</html>
CoffeeScript的簡單視圖
SAMPLE_TEMPLATE = """
<div id="my-fine-id">
My fine id!!!
</div>
"""
$ ->
class AppView extends Backbone.View
render: ->
console.log "rendering"
@template = _.template SAMPLE_TEMPLATE, {}
@el.html @template
initialize: ->
console.log "constructing"
@el = $('#band-app')
@events = {"click button#new-band": "render"}
app = new AppView()
謝謝!我使用'constructor:'函數,但切換到'initialize:'以便讓Backbone構造。在'initialize:'中分配事件哈希後立即調用'@delegateEvents()'解決了這個問題。 –