Не получается инициализировать блок
modules.define('b-map-filter-bar', ['i-bem__dom'], function(provide, BEMDOM) {
BEMDOM.decl(this.name, {
onSetMod: {
'js' : {
'inited' : function() {
// this.setMod('display', true);
console.log('init');
}
}
}
});
provide(BEMDOM);
});
bemjson
...
{
block: 'b-map-filter-bar',
mix: [{block: 'i-bem'}],
// mix: {block: 'b-map', elem: 'filters-bar'},
mods: {'theme': 'tosecond', 'display': false, 'js': 'inited'},
content: [
{
elem: 'ctrl',
// mods: {'theme': 'first'},
content: 'текст'
},
{
elem: 'shadow'
}
]
}
...
в консоль после загрузки страницы ничего не попадает
сам файл _index.js подключён
разобрался ))) Нутром чуял где ошибка.
нужно было указать просто js:true, а не писать моды и миксы.
Хотя думаю можно было бы к прошлому варинту data-bem добавить и всё бы заработало
Убрать js: inited из mods, добавить js: true блоку
;-)
data-bem='{"b-map-filter-bar":{}}'
—js: true
проще ;)Почему настолько важно иметь
data-bem
параметр для инициализации?Если у нас известно как называется блок (его класс). Почему мы не можем обойтись без data-bem='{"b-map-filter-bar":{}}' ? Особенно тогда, когда нам передавать нечего. Зачем лишнее дублирование?
Из моих догадок: Это сделано в связи с миксами, чтобы не инициализовать лишний блок.
А ты можешь сказать, какой блок здесь надо инициализировать?
@zxqfox Могу :) Никакой. Не подключён i-bem ;)
Ну в целом идею понял. Решения лучше в голову пока не пришло.
@belozyorcev Даже если добавить
i-bem
, это не дает ясности что именно за блоки надо инициализировать. Очередной момент, когда явное лучше неявного ;-)@zxqfox да я просто пошутил :) Спасибо за наводку о подводных камнях.