【发布时间】:2011-11-25 19:15:39
【问题描述】:
我遇到了backbone.js 的盲点。我已经写了这段代码,我想做的就是得到
在按钮单击时呈现的测试 div。如果我在initialize() 函数中调用render(),它会渲染。
但是,我从不触发render() 函数来响应点击事件。
我错过了什么?
谢谢!
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>
简单视图的咖啡脚本
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()
【问题讨论】: