我遇到了真正的问题,可以使用coffeescript和zepto.js编写简单的backbone.js应用程序

这是最简单的骨干视图,但事件却没有开火。我在控制台上也没有错误?我要去哪里?

#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

但是,如果我在上面的视图代码中添加超级,我会收到一个未定义的错误,他的代码不会。

有帮助吗?

解决方案

班上 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>"
    )

其他提示

我遇到了类似的问题(事件没有开火),发现问题是由于未设置@EL所致。我设置了:

@el: $("#content")

它起作用了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top