© 2024 WebHive

Порядком поднадоевший момент backbone

В одном из проектов с использованием chaplinjs, возникла проблема. Диалоговое окно с каждым вызовом и сохранением вызывало обработчик сохранения стольно раз сколько оно было вызвано. То есть открываем окно в 3-й раз, жмём сохранить и на сохранение у нас уходят 3 идентичных запроса. Причина банальна — очевидно какие-то проблемы с bind-ингом.

Однако диалоговое окно при каждом вызове создавалось заново, а при каждом закрытии полностью вычищалось из DOM-а. С chaplinjs я знаком не настолько круто, чтоб сходу диагностировать проблему, но ситуация вполне понятная — события повешены не на сам элемент, а bubbled up в document на верхнем уровне.

Уверен, что есть какой-то способ, чтоб событие отбиндивалось при уничтожении диалога автоматически, но в силу своего скудоумия не нашёл ничего лучше чем вручную отбиндивать событие при закрытии окна используя.

1
@.$el.off 'click', '<selector>'

Комментарии