Если устанавливать модификаторы элементу блока из экземпляра блока по BEM-событию, то срабатывают триггеры, прописанные внутри блока в onElemSetMod, но не внутри элемента в onSetMod. Если устанавливать модификаторы элементу блока из самого экземпляра элемента по DOM-событию, то срабатывают триггеры, прописанные внутри этого элемента в onSetMod, но не внутри блока в onElemSetMod.
Есть необходимость прописать триггеры только в одном месте внутри елемента в onSetMod, но чтобы они срабатывали всегда, неважно устанавливаю ли я модификаторы через this.setMod(modName, modVal) из элемента или this.setMod(elemName, modName, modVal) из блока.
Подскажите как этого добиться и в чем может быть проблема?
@yuriMalakhov Правильно ли я понимаю, что речь идет об использовании i-bem__dom_elem-instances?
@tadatuta Нет, я, к сожалению, не использовал i-bem__dom_elem-instances сначала. Если устанавливать модификатор, используя экземпляр элемента из блока this.elemInstance(elem).setMod(modName, modVal), то все триггеры срабатывают как и ожидалось. Спасибо за подсказку!
@yuriMalakhov тогда я бы порекомендовал отказаться от использования экземпляров элементов до выхода
bem-core v3и управлять ими через методы блоков-родителей.@tadatuta А почему стоит отказаться от использования экземпляров элементов?
В текущей стабильной версии
bem-coreих реализация несколько «сбоку». Работать будет, конечно, но ядро предполагает работу с элементами как jQuery-объектами, а для работы с БЭМ (установка модификаторов, etc) используется первый параметр методов блока (например,b1.setMod('elem1', 'mod1', 'val1')).Спасибо! Все понял. Будем ждать выхода bem-core v3, а пока следовать рекомендациям :)