@olafars

Работа события в Backbone?

Приветствую! Начал разбираться с Backbone.js и возник вопрос при работе с событиями клавиатуры, это первый опыт работы с Backbone.js, поэтому нужна помощь.
SearchView = Backbone.View.extend({
	el: $('.platform'),

	events: {
		'keydown': 'edit'
	},

	initialize: function () {
		console.log('initialized!');
	},

	edit: function(event) {
		console.log('Work!');
	},

});

var searchView = new SearchView();


Нужно, чтобы при нажатии определённых клавиш, срабатывал какой-то код, например:
edit: function(event) {
		if (event.keyCode == 37) {

		} else if(event.keyCode == 39) {

                }
	},

Как сделать в Backbone так, чтобы функция edit срабатывала всегда при нажатии какой-то клавиши?
  • Вопрос задан
  • 291 просмотр
Пригласить эксперта
Ответы на вопрос 1
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Ну если в лоб, то можно вот так:
var SearchView = Backbone.View.extend({
    events: {
        'keydown': 'checkKeyCode'
    },

    initialize: function () {
        // ...
        
        this.on('keyCode27', this.onEscape);
        this.on('keyCode13', this.onEnter);
        this.on('keyCode8', this.onTab);
    },

    checkKeyCode: function (event) {
        this.trigger('keyCode' + event.keyCode, event); // pass event along so we can do event.preventDefault
    }
});

Как вариант — не бросать события, а сразу вызывать нужные методы, типа this['keyCodeHandler'](event.keyCode)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы