Вот моя претензия: я наблюдаю за документом для поиска ключей, а затем вызываю обработчик. Обработчик вызывает функцию класса и привязан к контексту класса. Когда функция вызывается и мои условия выполняются, она должна перестать наблюдать за обработчиком. Но это не так.
Создан класс, это функция, которую я вызываю на странице:
look_for: function(key_combo) {
this.keys_array = key_combo.split("+");
this.match_key_handler = this.match_keys.bind(this);
document.observe('keyup', this.match_key_handler);
},
Это вызывает документ для наблюдения за keyup и вызывает this.match_keys (). Как видите, он назначен обработчику, потому что функция должна быть связана. Ниже приведены функции match_keys:
match_keys: function() {
// matching the keys here, blah blah
if(this.keys_matched) {
document.stopObserving('keyup',this.match_key_handler);
}
}
Однако, когда условие выполняется, оно не прекращает наблюдать! Если я перестану сохранять все ключевые записи в документе, эта функция будет отменена, но я хочу, чтобы она только отменила регистрацию match_key_handler.
StackOverflow, помоги мне! Ниже другой пост, который похож. Следил за тем, что было на странице, но все еще не играли в кости.
Прекратить наблюдать события с JS Prototype, не работающим с .bind (this)