Как при на событии одного блока, повлиять/повесить модификатор на блок в другой ветке документа?
Ведь это должно быть возможным и кажется ответ где-то рядом..
Если у нас например:
modules.define('block1', ['i-bem__dom', 'jquery'], function(provide, BEMDOM, $) {
{
live: function() {
this.liveBindTo('block1-1', 'click', function( ) {
// как тут правильно обратиться к другому элементу вне блока?
// (block2).setMod('block2-1','current-block1-1',true);
// предполагал что-то вроде следующего, но скорей всего тут что-то совстем не так
this.findBlockOutside('block2').setMod('switched'); // Ошибка: this.findBlockOutside('block2') возвращает null, видать не дотягивается область видимости.
});
}
}
});
Появилась мысль, вешать модификаторы через общий документ (
) page.js. С первого раза почему .js в родительском файле совсем не заработал и ошибок не выдал, решил искать другой метод, не работает значит не надо :)
Вычитал про наследование. Выполнил попытку следующего типа:
modules.define('bloack2', ['i-bem__dom'], function(provide, BEMDOM) {
provide(BEMDOM.decl(this.name, {}));
});
modules.define('block1', ['i-bem__dom'], function(provide, BEMDOM) {
provide(BEMDOM.decl(this.name, {
...
onSetMod : {
'switched' : function(){
this.__base.apply(this).setMod( 'visible', true); // Ошибка: TypeError: undefined has no properties
}
},
...
}));
});
Добился результата следующим методом, но знаю что он не рекомендуем:
onSetMod : {
'switched' : function(){
$('.block2').bem('block2-1').setMod( 'visible', true);
}
},
Помогите пожалуйста разобрать и сделать правильно.