Backbone.js - Добавление событий блокировки при активном просмотре?

У меня есть вид, называемый галереей, параметры. Я хочу слушать и действовать при событиях keydown при рендеринге галереи (до ее закрытия).

Как это сделать в магистральных событиях? Я пробовал все варианты "keydown X": функция, и никто не работал.

Ответы

Ответ 1

Я только что протестировал следующее, и он работал безупречно:

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

Я бы вернулся и проверил ваш код. Все события в Backbone определяются как делегаты, присоединенные к элементу viewInstance.el. Чтобы развязать события, вызовите viewInstance.remove(), который вызывает $(viewInstance.el).remove() под обложками и очищает все делегированные события.

Также обратите внимание, что в некоторых браузерах (как я полагаю, Firefox) есть известная проблема, что некоторые клавиши (например, клавиши со стрелками) не пузырятся и не будут работать должным образом с делегированными событиями keypress. Если вы используете специальные клавиши, вам, вероятно, лучше использовать keyup и keydown.