Closed alurin closed 11 years ago
/cc @veged @arikon
Это особенность текущей реализации -- примиксованные сущности никак не влияют на шаблоны, только добавляют css-классы и js-параметры. Единственное, что учитывается, это шаблоны на миксы к тому, что примиксовано (см. коммит https://github.com/bem/bem-bl/commit/8e1b409b40fcce18040e3f1614f07c1a78715768 там есть тесты).
К сожалению, быстро это не исправить :-(
@veged Потому что может что-нибудь из приложений сломаться? Или от сложности внутренней логики?
@zxqfox да ;-) и обратная совместимость, и есть неоднозначности, которые нужно придумать в какую сторону разрешать, а ещё и вопрос производительности
Это особенность текущей реализации -- примиксованные сущности никак не влияют на шаблоны, только добавляют css-классы и js-параметры.
Можно поподробней про Js параметры (ссылку на документацию). Изучение данного поведения BEM-tools и началось из-за того что появились проблемы с подключение нового js для уже существующего блока.
вот подробнее про js -- https://github.com/bem/bem-core/blob/feature/initial/common.docs/reference/reference.ru.md#js
а какие появились проблемы?
Спасибо за ссылку.
Проблема была в том что, данный BEM js для переопределенного блока b-menu-vert
(blocks
) из bem-bl
не работает:
BEM.DOM.decl('b-menu-vert', {
onSetMod : {
'js' : function() {
console.log('JS: ', this);
}
}
}, {
live: function () {
console.log('Live: ', this);
}
});
Вызывается только второй метод live, onSetMode 'js' не активируется
Проблема в том, что такая декларация переопределяет базовое поведение b-menu-vert
целиком, без вызова предыдущего метода (см. про this.__base
http://bem.github.com/bem-bl/sets/common-desktop/i-bem/i-bem.ru.html#Rasshireniepovedeniya).
Базово меню инициализируется "лениво" только по клику на свои элементы (https://github.com/bem/bem-bl/blob/master/blocks-desktop/i-menu/i-menu.js#L43), поэтому не случалось console.log('JS: ', this)
.
console.log('Live: ', this)
должно случаться, если в html есть хотя бы один, правильно оформленный (с параметрами через onclick), блок b-menu-vert
.
Спасибо.
P.S. Не в тему: Есть шанс запретить рендеру BEMHtml создовать HTML тэги чтоб подменить у b-page
элемент root
?
не очень понял вопрос про запрет создания HTML тегов -- можно завести отдельный issue с описанием проблемы/задачи, я постараюсь ответить
Как заставить BEM-tools вызывать правила из миксированных блоков с технологией BEMHtml.
pages/example/example.bemjson.js
:blocks/b-link-mixin/b-link-mixin.bemhtml
:Ожидаемый результат:
Реальный: