我正在尝试熟悉CoffeeScript和backbone.js,但我肯定漏掉了些什么。
这是CoffeeScript的代码:
MyView = Backbone.View.extend
events: {
"click" : "testHandler"
}
testHandler: ->
console.log "click handled"
return false
view = new MyView {el: $('#test_container')}
view.render()
生成以下JavaScript:
(function() {
var MyView, view;
MyView = Backbone.View.extend({
events: {
"click": "testHandler"
},
testHandler: function() {
console.log("click handled");
return false;
}
});
view = new MyView({
el: $('#test_container')
});
view.render;
}).call(this);
但是当我在 test_container
中点击时,click
事件不会触发 testHandler
。
如果我将输出的 JavaScript 改为:
$(function() {
var MyView, view;
MyView = Backbone.View.extend({
events: {
"click": "testHandler"
},
testHandler: function() {
console.log("click handled");
return false;
}
});
view = new MyView({
el: $('#test_container')
});
view.render;
});
去掉call(this)
并添加$
后,一切都按预期工作。我错过了什么吗?