web-dev-qa-db-ja.com

Backbone.js-ビューがアクティブなときにキーダウンイベントを追加しますか?

オプションのギャラリーと呼ばれるビューがあります。ギャラリーがレンダリングされたとき(ギャラリーが閉じられるまで)、キーダウンイベントを聞いて操作したいと思います。

バックボーンイベントでこれを行うにはどうすればよいですか? 'keydown X':functionのすべてのバリエーションを試しましたが、どれも機能しませんでした。

15
Pauly Dee

私はちょうど以下をテストしました、そしてそれは完璧に働きました:

_var view = Backbone.View.extend({
  // ... snip ...
  events: {
    'keyup :input': 'logKey'
    ,'keypress :input': 'logKey'
  }
  ,logKey: function(e) {
    console.log(e.type, e.keyCode);
  }
});
_

戻ってコードを確認します。バックボーンのすべてのイベントは、_viewInstance.el_要素にアタッチされたデリゲートとして定義されます。イベントのバインドを解除するには、viewInstance.remove()を呼び出します。これにより、内部で$(viewInstance.el).remove()が呼び出され、委任されたすべてのイベントがクリーンアップされます。

また、一部のブラウザ(Firefoxだと思います)では、一部のキー(矢印キーなど)がバブルせず、委任されたkeypressイベントで正しく機能しないという既知の問題があることにも注意してください。特別なキーをキャッチしている場合は、keyupkeydownを使用したほうがよいでしょう。

22
fearphage