Open trebushchuk opened 7 years ago
А смысл? в 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
module.exports = {
block: 'quest-select',
elem: 'button',
attrs: { 'data-quest': '[[+class]]' },
js: {
merchant: "[[+data]]"
},
content: [
...
]
}
------
<div class="quest-select__button i-bem"
data-bem='{"quest-select__button":{"merchant":"[[+data]]"}}'
data-quest="[[+class]]">...</div>
В плейсхолдер [[+data]]
соответственно приходит json.
Пробовал пробовал соответственно передавать через attrs
и через js
везде был конфликт кавычек, отчаявшись написал сюда, но в итоге решил экранированием json на стороне CMS через addslashes
.
Всем ответившим спасибо @kompolom, @tadatuta, @belozer, @veged
но в итоге решил экранированием json на стороне CMS через addslashes.
~имхо, это единственно правильный вариант~ а нет, это вполне нормальный вариант
attrs и data-json Возможно ли заставить режим attrs сгенерировать одиночные кавычки для вставки json
имхо, можно делать постпроцессинг по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]]'
, потому что снаружи кавычки одиночные
Собственно вопрос в заголовке.