Опять вопрос!
Суть простая, есть блок topmenu
с элементами, по нажатию открываю меню, и хочу для блока page
задать дополнительный модификатор
с jquery проблем не возникает
modules.define('topmenu', ['i-bem-dom', 'jquery'], function(provide, bemDom, $) {
provide(bemDom.declBlock(this.name, {
onSetMod : {
'js' : {
'inited' : function() {
this._domEvents('sublink').on('click', function() {
this.findChildElem('subwrap').toggleMod('visible', true);
$('.page').css('overflow', 'hidden')
});
}
}
}
}));
});
Но это не правильно, методы поиска .findChildBlock работают с содержимым блока, а для воздействия на другие блоки, нужно прописать в зависимостях или нет?
findBlocksOutside
как то он называется примерноКак я понимаю, лучше подписаться на добавление модификатора у элемента sublink блока topmenu после клика по нему и все это реализовать в блоке page в файле page.js
Но тоже вариант так себе, а если у меня куча всего что должно будет взаимодействовать с блоком этим
Именно так и нужно делать. Самый прямой вариант.
Те правило простое: двигаться всегда от родителя.
А если блоки совсем независимые? то так же искать родителя и в нем описывать взаимодействие? К примеру нужно получить data одного блока и передать элементу другого
@webtehnology искать родителя просто — ближайший контейнер, который включает все блоки, между которыми хочется организовать взаимодействие.
Еще, как вариант, можно такой контейнер специально создать и к нужным блокам примиксовать его элементы.
@tadatuta Спасибо! вроде уже начал вникать, так же хотел разобрать пример вкладок https://github.com/bem-contrib/hackaton/tree/master/common.blocks/tabs на не обновленной версии bem-core, что-то не завелось. Они актуальны для своей версии?