【问题标题】:Basic CoffeeScript not firing events when run?Basic CoffeeScript 在运行时不触发事件?
【发布时间】:2011-12-01 03:03:59
【问题描述】:

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

【问题讨论】:

    标签: coffeescript backbone.js


    【解决方案1】:

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

    【讨论】:

    • 是的,你完全正确。在这种情况下应该没有理由使用构造函数或超级。
    【解决方案2】:

    我遇到了类似的问题(事件没有触发),发现问题是由于没有设置@el。我设置了:

    @el: $("#content")
    

    它成功了。

    【讨论】:

      猜你喜欢
      • 2019-06-18
      • 2020-01-28
      • 1970-01-01
      • 1970-01-01
      • 2013-07-16
      • 2020-08-16
      • 1970-01-01
      • 2012-10-20
      • 1970-01-01
      相关资源
      最近更新 更多