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

Всем привет!

Я только учусь и все пытаюсь разобраться с i-bem.

  1. Как правильно воспроизвести такую логику: есть два блока, первый из них через JavaScript влияет на другой. Например, кнопка меню на мобильной версии сайта показывает и скрывает меню. Я хотел сделать таким образом, первому блоку передаются параметры, название блока и id, над которым будут совершаться какие-то действия:
            js: {
                toggledBlock: {
                    block: 'nav',
                    id: 'menu'
                }
            }

Дальше я пытаюсь по этим данным найти блок:

var targetID = this.params.toggledBlock.id;
var targetBlock = this.params.toggledBlock.block;
var toggledBlock = this.findBlocksOutside(targetBlock).filter(function(block) {
    return block.params.id = targetID;
});

Эти блоки у меня стоят рядом; findBlocksOutside ничего не находит, остальные методы findBlock(s)* тоже ничего не находят. У меня возник такой вопрос, почему же вообще существуют такие методы как findBlocksOutside, findBlocksInside, findBlocksOn, не противоречат они самой методологии, что блок должен знать где находится другой блок? Не проще ли иметь метод find, который просто находит необходимый блок в независимости от местаположения? Как же правильно решить задачу с меню, и как правильно применять методы findBlock*?

  1. Второй вопрос по документации по i-bem, можно ли как-то ее понять? =) Сколько я ее не читал, так я с ней и не подружился. Можно ли найти примеры использования методов i-bem? Каждый раз как я пытаюсь написать что-то на JavaScript я застапариваюсь на простых вещах. Например метод this.setMod([elem], modName, modVal), я бился несколько часов пытаясь проставить модификатор элементу:
this.setMod('elem', 'someMod', 'itsValue');

В первый раз, когда используешь этот метод, хочется написать именно таким образом, и в голову не приходит, что на месте 'elem' должен быть явно указанный элемент, this.elem('elem'). В документации при первой встречи метода setMod ничего не сказано про то, что же передается этому методу. У меня каждый раз возникают проблемы при использовании какого-то методы i-bem. Кажется из названия метода ясно как он работает, пытаешься его использовать, понимаешь, что понятия не имеешь как он работает, лезешь в документацию, в документации ничего не написано.

Также возникает вопрос, если есть методы findBlocks*, которые возвращают массив блоков, то почему нет метода, который возвращает массив элементов?