bem-site / bem-forum-content-ru

Content BEM forum for Russian speak users
MIT License
56 stars 6 forks source link

i-bem, не получается инициализировть блок #200

Open belozer opened 9 years ago

belozer commented 9 years ago

Не получается инициализировать блок

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 подключён

belozer commented 9 years ago

разобрался ))) Нутром чуял где ошибка.

нужно было указать просто js:true, а не писать моды и миксы.

Хотя думаю можно было бы к прошлому варинту data-bem добавить и всё бы заработало

...
{
    block: 'b-map-filter-bar',
    js: true,
    mods: {'theme': 'tosecond', 'display': false},
    content: [
        {
            elem: 'ctrl',
            // mods: {'theme': 'first'},
            content: 'текст'
        },
        {
            elem: 'shadow'
        }
    ]
}
...
Guria commented 9 years ago

Убрать js: inited из mods, добавить js: true блоку

qfox commented 9 years ago

;-)

Хотя думаю можно было бы к прошлому варинту data-bem

data-bem='{"b-map-filter-bar":{}}'js: true проще ;)

belozer commented 9 years ago

Почему настолько важно иметь data-bem параметр для инициализации?

Если у нас известно как называется блок (его класс). Почему мы не можем обойтись без data-bem='{"b-map-filter-bar":{}}' ? Особенно тогда, когда нам передавать нечего. Зачем лишнее дублирование?

Из моих догадок: Это сделано в связи с миксами, чтобы не инициализовать лишний блок.

qfox commented 9 years ago

А ты можешь сказать, какой блок здесь надо инициализировать?

<div class="asd qwe zxc rty fgh vbn">oops</div>
belozer commented 9 years ago

@zxqfox Могу :) Никакой. Не подключён i-bem ;)

Ну в целом идею понял. Решения лучше в голову пока не пришло.

qfox commented 9 years ago

@belozyorcev Даже если добавить i-bem, это не дает ясности что именно за блоки надо инициализировать. Очередной момент, когда явное лучше неявного ;-)

belozer commented 9 years ago

@zxqfox да я просто пошутил :) Спасибо за наводку о подводных камнях.