EN
gwer
gwer
5 сентября 2017

Что-то я сломался на этом месте.

Вот есть у меня, скажем, блок input из bem-components. К нему примиксован элемент моего блока. Скажем, my-block__control.

{
    block: 'input',
    mix: { block: 'my-block', elem: 'control }
}

Из my-block легко получить этот input:
const input = this.findChildElem('control').findMixedBlock(Input).

Но можно ли аналогичным образом теперь из input получить элемент control? Например, input'ов много, я вешаю обработчик onchange на них, и этот обработчик должен взаимодействовать с миксованным элементом control. Каким-то из методов поиска можно к нему обратиться? Хочется что-то вроде такого:
input.findMixed*({ block: 'my-block', elem: 'control' })

Или только заранее формировать соответствия блоков и элементов и по ним уже ориентироваться?

tadatuta
#tadatuta
5 сентября 2017

Чтобы повзаимодействовать с примиксованным control-ом, можно просто подписаться на событие инпута из my-block и в обработчике дергать уже собственный элемент control (т.е. обработка события просто переезжает из инпута в my-block):

this._events(Input).on('change', function() { this._elem('control').doSomething() });
gwer
#gwer
5 сентября 2017

Это если контрол один. А когда их много, и надо обратиться к control конкретного инпута?

Ну и вообще это лишь пример. Вопрос больше о том, существует ли метод, позволяющий из инстанса инпута получить примиксованный к нему элемент control блока my-block?