使用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&amp; amp;骨干在一起https://github.com/bnolan/Backbone-Mobile/blob/master/application.coffee
但是,如果我在上面的视图代码中添加super,我会得到一个未定义的错误,他的代码没有。
答案 0 :(得分: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>"
)
答案 1 :(得分:2)
我有一个类似的问题(事件没有解雇),发现问题是由于没有设置@el。我说:
@el: $("#content")
并且有效。