Backbone.js - 在视图处于活动状态时添加keydown事件?

Pau*_*Dee 15 javascript view javascriptmvc backbone.js

我有一个名为gallery的视图选项.我想在渲染图库时(直到它关闭)听取并处理keydown事件.

我如何在骨干事件中这样做?我已经尝试了'keydown X'的所有变体:功能,但没有一个有效.

fea*_*age 22

我刚刚测试了以下内容,它完美无缺:

var view = Backbone.View.extend({
  // ... snip ...
  events: {
    'keyup :input': 'logKey'
    ,'keypress :input': 'logKey'
  }
  ,logKey: function(e) {
    console.log(e.type, e.keyCode);
  }
});
Run Code Online (Sandbox Code Playgroud)

我会回去查看你的代码.Backbone中的所有事件都定义为附加到viewInstance.el元素的委托.要取消绑定事件,请viewInstance.remove()调用$(viewInstance.el).remove()封面下的哪些调用并清除所有委派的事件.

另请注意,在某些浏览器中(我认为是Firefox)存在一个已知问题,即某些键(如箭头键)不会冒泡,并且无法在委派keypress事件中正常工作.如果您正在捕捉特殊键,那么您可能最好使用keyupkeydown.

  • - 我不能让这些全局的keypress/keyup/keydown工作.还有其他一些我必须忘记的小细节吗?你是否可以指出一个参考甚至是一个小提琴,以获得有关全文档事件的更多信息 (9认同)
  • 这不是假设有问题的视图包含输入吗?我认为OP正在询问特定视图被简单渲染的情况 - 想象一下有一个光箱图像或者其他东西,你想要将"Escape"连接到关闭图像...... (2认同)
  • 你是对的.我的解决方案假设有输入元素.如果您想对视图中的任何位置的键事件进行操作,则只需排除选择器(如Backbone文档所述).`events:{keyup:'logKey'}` (2认同)