В одном из проектов с использованием chaplinjs, возникла проблема. Диалоговое окно с каждым вызовом и сохранением вызывало обработчик сохранения стольно раз сколько оно было вызвано. То есть открываем окно в 3-й раз, жмём сохранить и на сохранение у нас уходят 3 идентичных запроса. Причина банальна — очевидно какие-то проблемы с bind-ингом.
Однако диалоговое окно при каждом вызове создавалось заново, а при каждом закрытии полностью вычищалось из DOM-а. С chaplinjs я знаком не настолько круто, чтоб сходу диагностировать проблему, но ситуация вполне понятная — события повешены не на сам элемент, а bubbled up в document на верхнем уровне.
Уверен, что есть какой-то способ, чтоб событие отбиндивалось при уничтожении диалога автоматически, но в силу своего скудоумия не нашёл ничего лучше чем вручную отбиндивать событие при закрытии окна используя.
1 | @.$el.off 'click', '<selector>' |
Комментарии