Удаление подписки на БЭМ-события выполняется автоматически при уничтожении экземпляра блока.
this.findBlockInside('button').on('click', this.save, this);
При том что блок button может быть удален из DOM, затем снова вставлен, и несколько раз. Будет ли автоматически удалены подписки на БЭМ события? Иными словами, при уничтожении какого блока подписки будут удалены автоматически, того который подписался, или того на события которого сделана подписка?
Будут удалены события блока
button. И в данном случае он сам подписывается на свои события. Код выше можно представить следущим образом:Вот как это происходит:
updateилиreplace. При этом последние внутри себя вызывают все тот жеdestruct.unбез аргументов.unнаследуется i-bem-блоками отEmitterиз модуля events. Его реализация при вызове без аргументов удаляет весь объект с событиями для данного блока. Кроме того,i-bem__domдоопределяетunдополнительным умением прибивать специальные подписки наwindowиdocument.@tadatuta
Хочу уточнить. Поправь если не так. Блок
buttonсам подписывается на свои события и обрабатывает их в контексте родителя, по-сути вызывая его методы. То есть, при удалении button.domElem все ок - нет лишних подписок.Все так. Но важно, чтобы удаление происходило с помощью методов
BEMDOM, а неbutton.domElem.remove().Спасибо!