我正在与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()'解决了这个问题。 –