基础的CoffeeScript代码在运行时没有触发事件?

3

我正在使用CoffeeScript和Zepto.js编写一个简单的Backbone.js应用程序,但遇到了真正的问题。

这是最简单的Backbone视图,但事件不触发。我在控制台中也没有看到错误信息?我错在哪里了?

#Main view
class AppView extends Backbone.View

  constructor: ->    
    @el = $("#books")    
    @template = _.template("<div>New Item <a href='' id='addNew'> add new item</a></div>")

  events: {
      "click" : "createNew"
  }

  render: =>
    @el.html(@template())

  createNew : ->
    console.log "new"


#Onload
$(document).ready ->
   view = new AppView
   view.render()

我一直在关注唯一一个我能找到的有关CoffeeScript和Backbone结合的例子,链接如下:https://github.com/bnolan/Backbone-Mobile/blob/master/application.coffee

但是,如果我在我的视图代码中添加super,我会得到一个未定义错误,而他的代码则不会出现这个问题。

2个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
5

Backbone.View有自己的constructor,它会做很多工作,如果你重写了它并没有调用super,那就不好。

相反,Backbone.View为您提供了定义自己的构造函数类型函数initialize的能力。在那里执行所有设置。Backbone.View#constructor将调用initialize

#Main view
class AppView extends Backbone.View

  initialize: ->    
    @el = $("#books")    
    @template = _.template(
      "<div>New Item <a href='' id='addNew'> add new item</a></div>"
    )

是的,你完全正确。在这种情况下没有必要使用构造函数或super。 - JMWhittaker

2

我曾经遇到过类似的问题(事件没有触发),后来发现问题是因为没有设置@el。我进行了设置:

@el: $("#content")

它起作用了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,