Войти с помощью github
Форум
/
8 years ago
attrs и data-json Возможно ли заставить режим attrs сгенерировать одиночные кавычки для вставки json
trebushchuk
шаблоны (BEMHTML BEMTREE)
Собственно вопрос в заголовке.
Комментарии: 6
А смысл? в 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]]', потому что снаружи кавычки одиночные