А смысл? в data-bem тоже json и все работает без одинарных кавычек
@trebushuk можно конкретный пример, из каких данных на входе, что именно хочется получить?
@tadatuta :+1:
если я правильно понял вопрос, то прямо сейчас можно использовать только двойные кавычки https://github.com/bem/bem-xjst/blob/a2c71800c6474c79dc9fcb691fd7a959b9a7eb66/lib/bemhtml/index.js#L176 или вообще без кавычек для простых значений https://github.com/bem/bem-xjst/blob/master/docs/en/3-api.md#unquoted-attributes
Все дело в том что BEMHTML шаблонизатор используется для генирации фаблонов для CMS
В плейсхолдер
[[+data]]
соответственно приходит json. Пробовал пробовал соответственно передавать черезattrs
и черезjs
везде был конфликт кавычек, отчаявшись написал сюда, но в итоге решил экранированием json на стороне CMS черезaddslashes
. Всем ответившим спасибо @kompolom, @tadatuta, @belozer, @veged~имхо, это единственно правильный вариант~ а нет, это вполне нормальный вариант
имхо, можно делать постпроцессинг поcле такой генерации типа
BEMHTML.apply({...}).replace(/:"\[\[+data\]\]"/g, ':[[+data]]')
, если гарантировано, что+data
будет заменена на валидный JSON.Либо
BEMHTML.apply({...}).replace(/="\[\[+class\]\]"/g, '=\'[[+class]]\'')
, если точно знаешь, что это отдельный , что+data
будет заменена на валидный JSON.Главное помнить, что в случае с
data-bem='{"quest-select__button":{"merchant":"[[+data]]"}}'
— нельзя сделать"merchant":'[[+data]]'
, потому что снаружи кавычки одиночные