我的课程定义如下:
class NewUser extends Backbone.View
template : JST["backbone/templates/events/new"]
events :
'click button' : 'hello'
hello : ->
alert('hi')
render : ->
@el = $(@template())
@
我按如下方式初始化页面:
$('body').append(new NewUser().render().el)
然而,当我点击按钮时,不会显示警告。有人看到我的代码有什么问题吗?视图呈现,但事件从未注册。
答案 0 :(得分:1)
您正在@el
方法中创建render
:
render : ->
@el = $(@template())
@
但你忽略了致电delegateEvents
:
使用jQuery的
的View构造函数中调用delegate
函数为视图中的DOM事件提供声明性回调。 [...]默认情况下,在{...]delegateEvents
因此,您的事件永远不会被绑定到您添加到DOM的@el
,并且您的按钮没有任何用处。您的render
应如下所示:
render : ->
@el = $(@template())
@delegateEvents()
@
答案 1 :(得分:0)
模板的按钮部分是否呈现给视图' el
?
如果不是,则hello
事件不会被触发,因为事件哈希仅限于视图本身内的事件。在这种情况下,您需要手动绑定到render
方法中的事件
render : ->
@el = $(@template());
$('#buttonId').click(@hello);