Привет! Подскажите пожалуйста, почему на элемент не устанавливается блок i-bem и модификатор js_inited? Вот декларация элемента:
modules.define('range__tooltip', ['i-bem__dom', 'jquery'], function (provide, BEMDOM, $) {
provide(BEMDOM.decl({ block: 'range', elem: 'tooltip' }, {
onSetMod: {
js: {
inited: function () {
console.log('init tooltip');
}
}
}
}
));
});
Если проблема не в этом куске кода, то вот ссылка на весь проект. Буду благодарен за помощь в решении проблемы :)
Потому что, элементы, по-умолчанию, не имеют своих js инстанс представлений. Можно подключить в зависимости модификатор elem-instances блока i-bem, но его использование не рекомендуется. Опыт показывает, что чаще всего задачу можно решить в инстансе блока, не прибегая к отдельным инстансам на элементах. Если поясните задачу, можно попробовать вместе её решить.
@Guria, да я тоже только что понял, что смысла в этом нет. Я хочу реализовать определенное поведение элемента __tooltip по определенному модификатору. Сейчас в js файле блока range добавил следующую конструкцию:
Но в консоль все равно ничего не выводится...
Ну код сработать должен именно при установке модификатора на элемент. Если хотите что-то сделать при инициализации, то в js inited блока проверяйте что тултип имеет модификатор type со значением flow.
@Guria, но он должен ведь сработать, если изначально при загрузке страницы этот модификатор установлен? Я в шаблоне прописал его.
Нет. Он сработает только при установке модификаторы в рантайме.
@Guria, спасибо, не знал о таком поведении. Тогда получается, если я хочу определить какое-то поведение элемента при загрузки страницы, мне при инициализации блока нужно проверять какой модификатор установлен у элемента и уже производить необходимые действия?
@kuflash угу ;( https://github.com/bem/bem-core/issues/688
@zxqfox, спасибо. Значит буду мириться :) Твой вариант в issue прекрасно исправляет данный недостаток. Еще раз спасибо большое!