Войти с помощью github
Форум /

Как при на событии одного блока, повлиять/повесить модификатор на блок в другой ветке документа? Ведь это должно быть возможным и кажется ответ где-то рядом.. Если у нас например:

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);
       }
  },

Помогите пожалуйста разобрать и сделать правильно.