我在解決這個錯誤時遇到了很大的麻煩。Backbone將事件keydown綁定到文檔返回Uncaught TypeError:Object [object Object] has no method'apply'
我在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的觸發。
看完這個:Uncaught TypeError: Object [object Object] has no method 'apply'
我也試過: $(document).on('keydown', function(e) { this.keyboard(e); }, this);
但它仍然給了我同樣的錯誤。
和: $(document).on('keydown', 'keyboard', this);
在events : { 'event' : 'action' }
風格 但它不會做任何事情。
我可能通過在代碼中的其他地方使用jQuery來發現一些黑客行爲,但由於我不擅長事件處理和Backbone,所以我希望能夠很好地運行它。
我希望我很清楚,謝謝
[這不是'on']的正確用法(http://api.jquery.com/on/)。 –