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 添加到上面的视图代码中,我会得到一个未定义的错误,他的代码不会。

4

2 回答 2

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>"
    )
于 2010-12-30T18:53:54.917 回答
2

我有一个类似的问题(事件没有触发),发现问题是由于没有设置@el。我这样设置:

@el: $("#content")

它奏效了。

于 2011-11-30T19:03:59.023 回答