为什么我的活动没有主干?

时间:2012-01-19 22:59:47

标签: javascript backbone.js coffeescript

我的课程定义如下:

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)

然而,当我点击按钮时,不会显示警告。有人看到我的代码有什么问题吗?视图呈现,但事件从未注册。

2 个答案:

答案 0 :(得分:1)

您正在@el方法中创建render

render : ->
    @el = $(@template())
    @ 

但你忽略了致电delegateEvents

  

使用jQuery的delegate函数为视图中的DOM事件提供声明性回调。 [...]默认情况下,在{...]

的View构造函数中调用delegateEvents

因此,您的事件永远不会被绑定到您添加到DOM的@el,并且您的按钮没有任何用处。您的render应如下所示:

render : ->
    @el = $(@template())
    @delegateEvents()
    @

答案 1 :(得分:0)

模板的按钮部分是否呈现给视图' el

如果不是,则hello事件不会被触发,因为事件哈希仅限于视图本身内的事件。在这种情况下,您需要手动绑定到render方法中的事件

render : ->
  @el = $(@template());
  $('#buttonId').click(@hello);