@RaDir

Почему не применяются стили к элементу в шаблоне bemhtml.js?

Всем привет!
Уважаемые bem-знатоки, помогите, пожалуйста, разобраться в следующем вопросе.

Есть блок page, описанный в index.bemjson.js:
module.exports = {
    block: 'page',
    title: 'Test.ru | index',
    favicon: '/favicon.ico',
    head: [
        { elem: 'meta', attrs: { name: 'description', content: '' } },
        { elem: 'meta', attrs: { name: 'viewport', content: 'width=device-width, initial-scale=1' } },
        { elem: 'css', url: '//fonts.googleapis.com/css?family=Open+Sans:400,300,600&subset=cyrillic,latin' },
        { elem: 'css', url: 'index.min.css' }
    ],
    scripts: [{ elem: 'js', url: 'index.min.js' }],
    mods: { theme: 'testtheme' },
    mix: { block: 'container' },
    content: 'wrapper goes here'
};


Внутри этого блока необходимо разместить элемент wrapper. Чтобы не "гадить" в index.bemjson.js, я этот элемент описал в шаблонизаторе page.bemhtml.js:
block('page')(
    content()(function () {
        return [
            {
                elem: 'wrapper',
                content: this.ctx.content
            }
        ];
    })
)


Вот тут-то и засада происходит. Шаблонизатор отрабатывает на ура и добавляет элемент внутрь блока page, но стили элемента page__wrapper.post.css в итоговый css не добавляются:
.page__wrapper {
  background: #fff;
}


Причем, если этот же элемент описать в index.bemjson.js, то стили применяются без проблем.

В чем причина этой аномалии?
Заранее благодарен.
  • Вопрос задан
  • 201 просмотр
Решения вопроса 1
@ilyarsoftware
Надо добавить для блока page.deps.js:

[{
    shouldDeps : [
        {
            elems : ['wrapper']
        }
    ]
}]

Еще примеры смотрите в bem/bem-components/common.blocks.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы