我在修复这个错误时遇到了很大的麻烦。
我在 Backbone.js 中有一个视图,我想将一些操作与键盘事件绑定。
这是我的观点:
window.PicturesView = Backbone.View.extend({
initialize : function() {
$(document).on('keydown', this.keyboard, this);
},
remove : function() {
$(document).off('keydown', this.keyboard, this);
},
render : function(eventName) {
// blah blah blah
},
next : function() {
// blah
},
prev : function() {
// blah
},
keyboard : function(e) {
console.log(e.keyCode);
if (e.keyCode == 37) {
this.prev();
return false;
}
if (e.keyCode == 39) {
this.next();
return false;
}
}
});
当我按下键盘时,我得到这个错误:
Uncaught TypeError: Object [object Object] has no method 'apply'
这是由 jQuery 触发的。
读完后:未捕获的类型错误:对象 [对象对象] 没有方法“应用”
我也试过:
$(document).on('keydown', function(e) {
this.keyboard(e);
}, this);
但它仍然给我同样的错误。
并且:
$(document).on('keydown', 'keyboard', this);
在events : { 'event' : 'action' }
风格上,但它没有做任何事情。
我可能只在代码中的其他地方使用 jQuery 来发现一些 hack,但是由于我不是事件处理和 Backbone 方面的专家,所以我想以一种好的方式运行它。
我希望我清楚,谢谢