Прототип | keyup Event.stopObserving () не работает, когда обработчик привязан к классу - PullRequest
1 голос
/ 03 февраля 2011

Вот моя претензия: я наблюдаю за документом для поиска ключей, а затем вызываю обработчик. Обработчик вызывает функцию класса и привязан к контексту класса. Когда функция вызывается и мои условия выполняются, она должна перестать наблюдать за обработчиком. Но это не так.

Создан класс, это функция, которую я вызываю на странице:

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)

...