Не могу разобраться по описанию в разделе Декларация блока, как примешивать блок (отдельный специально подготовленный миксин?) к элементу или модификатору. Ткните меня, пож., в примеры использования declMixin
? В bem-core
, bem-components
что-то не вижу ничего.
Там же в доке ниже как раз приводится пример для элемента: https://ru.bem.info/platform/i-bem/declaration/#Примешивание-миксина
@tadatuta В доке примера не увидел. Есть "Аналогично для элемента с использованием метода declElem."
Пробовал сделать аналогично, вот так примерно (пытюсь примешать mixin
expandable
к элементу'KOListDetails__section'
):При инициализации элемента (
onSetMod:js:inited
) вижу, что стандартных наследуемых методов bem-объектов нет. Как минимумthis.findChildBlock()
,this._block()
не определены.Если правильно понимаю, в
declEntity
(i-bem.vanilla.js) не передаётсяbase
, то наследуется либо от уже определённой (вentities[]
) сущности, либо от переданного вbaseCls
"пустого определения"Elem
(вdeclElem
:var baseCls = Elem
):base || (base = entities[entityName] || baseCls)
.Пробую определять
expandable
черезdeclBlock
-- всё заводится и работает.Ну, пожалуй, кроме того, что не работают определённые вexpandable
триггеры на модификаторыonSetMod/beforeSetMod
.Что делаю не так?
Возможно вообще в миксинах реагировать на изменение модификаторов экземпляра-хозяина?М.б., всё-таки есть где-то примеры использования миксинов?
UPD По поводу модификаторов заблуждался: забыл о
this.__base
. Всё работает.