// item = { content: 'Пункт меню', level: [ { url: '#', content: 'Пункт подменю' } ] };
{
block: 'link',
mix: [{ block: 'game-nav', elem: 'link', mods: { level: true } }],
content: [
item.content,
// 1. Хочу встроить сюда что нибудь что зависит от других данных,
// например, наличие подменю у элемента меню. Данный способ
// оставляет <div></div> в случае если false так как в bemjson
// добавляется элемент "false".
item.level &&
({
block: 'text', content: 'test'
}),
],
// 2. Этот вариант подходит только для свойств.
// При использовании в контенте так же получаю рядом пустой div.
url: item.url ? item.url : undefined,
}
Нет ли каких сокращенных красивых вариантов? Или только пуш в массив и добавление ключей?
item.level? {block: 'text', content: 'text'} : ''— так точно должно работать.Еще можно
[ item.level && {} ].filter(function(v) { return v; })В
BHfalse/null— ничего не выводит. Каким шаблонизатором пользуешься?@zxqfox, спасибо! Пользуюсь bemtree, оба способа работают, про пустую строку что-то не подумал сразу :+1:
Хотел спросить, если вопрос решился топик надо закрывать или оставить чтобы на форуме висел?
@Immuzov Видимо, для bemtree это критично, оно же bemjson генерирует.
Закрытие, кажется, считается решением. По этой части к @tadatuta и @tavriaforever ;-)
@zxqfox, думал их пингануть, но чет постеснялся :-D
@Immuzov закрытый пост помечается галочкой и остаётся доступным на форуме
Если не возникнет каких-либо доводов против, в грядущей версии BEMTREE на основе
bem-xjst 4falsy айтемы не будут попадать в результирующий BEMJSON.PS:
[].filter(function(v) { return v; })можно сократить до[].filter(Boolean).@tadatuta :+1: Хорош! ;-)
@tadatuta, спасибо, в который раз! Думаю теперь можно закрывать.