bem-site / bem-forum-content-ru

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

Помогите разобраться с bemhtml #1277

Closed satanicman closed 6 years ago

satanicman commented 7 years ago

Всем привет. К примеру есть такой вот bemjson

{
    block: 'b1',
    content: [
        {
            block: 'b2',
            mix: {block: 'b1', elem: 'e1'},
            content: [
                {
                    elem: 'e1',
                    content: 'title'
                },
                {
                    elem: 'e2',
                    content: 'description'
                }
            ]
        },
        {
            block: 'b2',
            mix: {block: 'b1', elem: 'e1'},
            content: [
                {
                    elem: 'e1',
                    content: 'title'
                },
                {
                    elem: 'e2',
                    content: 'description'
                }
            ]
        }
    ]
}

Допустим блок b1 это какой-то список, b2 это элемент списка который может использоваться еще где-то на странице но не в виде элемента списка а просто в виде блока. Но вот дилемма, если примиксовать к b2 элемент блока b1e1 и задать ему bemhtml в котором бы говорилось что b1e1 должен иметь тег li то этот код не срабатывает. Напрямую в bemjson писать не хочется tag. Пробовал прописывать всякого рода зависимости, блока b2 от блока b1, блока b2 от элемента e1 блока b1 и блока b1 от элемента e1. Как будет правильно поступать в данной ситуации?

Yeti-or commented 7 years ago

как на счет обернуть block: b2 в элементы блока b1 ?

2017-03-12 19:09 GMT+03:00 satanicman notifications@github.com:

К примеру есть такой вот bemjson

{ block: 'b1', content: [ { block: 'b2', mix: {block: 'b1', elem: 'e1'}, content: [ { elem: 'e1', content: 'title' }, { elem: 'e2', content: 'description' } ] }, { block: 'b2', mix: {block: 'b1', elem: 'e1'}, content: [ { elem: 'e1', content: 'title' }, { elem: 'e2', content: 'description' } ] } ] }

Допустим блок b1 это какой-то список, b2 это элемент списка который может использоваться еще где-то на странице но не в виде элемента списка а просто в виде блока. Но вот дилемма, если примиксовать к b2 элемент блока b1e1 и задать ему bemhtml в котором бы говорилось что b1e1 должен иметь тег li то этот код не срабатывает. Напрямую в bemjson писать не хочется tag. Пробовал прописывать всякого рода зависимости, блока b2 от блока b1, блока b2 от элемента e1 блока b1 и блока b1 от элемента e1. Как будет правильно поступать в данной ситуации?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/bem-site/bem-forum-content-ru/issues/1277, or mute the thread https://github.com/notifications/unsubscribe-auth/ABur3Cmscrn-RTn-5NniTRDNDFDSIXGRks5rlBi4gaJpZM4MalTp .

tadatuta commented 7 years ago

Если у b2 нет своих собственных шаблонов, то можно просто поменять его местами с миксом:

{
    block: 'b1',
    elem: 'e1', // элемент b1__e1 стал «главным», его шаблоны применятся
    mix: {block: 'b2'}, // шаблоны b2 не будут применяться
    content: [
        {
            block: 'b2', // здесь явно говорим, что элемент относится к блоку b2
            elem: 'e1',
            content: 'title'
        },
        {
            block: 'b2',
            elem: 'e2',
            content: 'description'
        }
    ]
}

Если же и у b2 есть шаблоны, которые необходимо применить, то возникает некоторая неоднозначность: если и b1__e1 и b2 будут устанавливать тег, то кто должен победить?

Yeti-or commented 7 years ago

@tadatuta если бы миксы шаблонизировались я бы предположил что последний в массиве миксов, если микс один то он.

satanicman commented 7 years ago

@tadatuta Ваш ответ натолкнул меня на размышления, а вот и правда, какой тэг тогда победит. Видимо самым правильным способом будет сделать как сказал @Yeti-or просто обернуть b2 в b1__e1