Здача: матчить элемент блока с модификатором.
Вроде бы должно быть так ведь: block('b').mod('m', true).elem('e')( ... );
?
Сам по себе блок+мод отлавливается замечательно: block('b').mod('m', true)
. Аналогично -- вложенный элемент block('b').elem('e')( ... );
.
Но всё вместе никак почему-то не удаётся.
Что я делаю не так?
Должно работать именно так, вот демка: https://goo.gl/p7qhNJ
Только что понял, в чём дело. Мне тоже как-то казалось, что я прав. %) Два часа тупого пяленья на код и пустых переделок всё-таки дали результат. Дело банальное до крайности (как обычно):
Дело в том, что часть кода у меня создаётся динамически (меняем/добавляем элементы внутри уже созданного блока через
BEMHTML.apply(...)
) и вот там в шаблоны отдаётсяelem : <имя_элемента>
иblock : <имя_блока>
, чтобы было понятно, откуда брать шаблон. О том, что шаблону неоткуда узнать об имеющихся в уже сгенерённом блоке модификаторов, никто не подумал.Пойду цеплять модификаторы. %))
Ещё чуть-чуть: А как при такой схеме правильно раскладывать файлы бэм в дереве файловой структуры? Предполагал, что для описанного случая (пытаюсь группировать элементы блока с определённым модификатором), должно было быть что-то вроде:
-- Но по факту не работает.
Единственный ли выход -- валить всё в
block/_mod/block_mod.*
без группировки по отдельным сущностям?В подсказке по организации файловой структуры ничего подходящего вроде бы находится...
...Вот вижу ещё старый ответ про наименование файлов. Но там рассматривается обратная ситуация: как именовать файлы модификатора вложенного элемента...
Это тот же
block('b1').mod('m1', true).content()('works!')
, только ты меняешь контент не блоку, а элементу блока. Поэтому, в nested файловой структуре, расположение шаблона будетb1/_m1/b1_m1.bemhtml.js
@yar-usenko Имелось в виду, существует ли возможность разложить элементы по файлам/папкам уже внутри описания мода. Напр.:
Сейчас у меня, действительно, всё живёт в
b1/_m1/b1_m1.*
-- работает, но немножко некрасиво.Сейчас готовой такой схемы нет, но в теории она может быть произвольная. Хотя в данном случае
b1/_m1/b1_m1.*
вроде вполне логичный вариант.