Взаимодействие блоков и элементов
В рамках БЭМ-методологии блоки и элементы следует разрабатывать так, чтобы свести к минимуму зависимость состояний одних сущностей от других. Однако на практике идеал полной независимости блоков недостижим.
Взаимодействие блоков и элементов может быть реализовано:
с помощью подписки на БЭМ-события;
с помощью непосредственного вызова методов других экземпляров или статических методов класса;
через проверку состояний одного экземпляра из другого.
Примечание Не используйте DOM-события для организации взаимодействия между экземплярами. DOM-события следует использовать только во взаимодействиях экземпляра со своим DOM-узлом.
Для реализации взаимодействия блоков или элементов i-bem.js
предоставляет API:
Доступ к классам блоков и элементов
Классы блоков и элементов, можно получить через модульную систему ym. Это же верно и для блоков и элементов без DOM-представления.
Доступ к классам блоков и элементов необходим для:
Доопределения декларации блока и наследования.
Поиска их экземпляров в DOM-дереве.
Вызова статических методов класса.
Пример
Блок button
наследуется от базового блока control
:
modules.define('button', ['i-bem-dom', 'control'], function(provide, bemDom, Control) {
provide(bemDom.declBlock(this.name, Control, {}));
});