Есть такой код:
{
block: 'donut-pie',
tag: 'svg',
attrs: {
width: '45px',
height: '45px'
}
}
Все классно отрисовывается, а в консоль кидает: Uncaught TypeError: domNode.className.match is not a function
.
Если сделать так:
{
block: 'donut-pie',
content: {
tag: 'svg',
attrs: {
width: '45px',
height: '45px'
}
}
}
Так ошибки нет. Почему?
@Defite в песочнице не воспроизводится, видимо, проблема в чем-то другом.
Кажется, отловил ошибку. Блоку donut-pie ставлю
js: true
, затем добавляю клиентский js:И вот после этого ошибка появляется. Если убрать скрипт или закомментить
js: true
, все снова в порядке.Ну и если просто убрать
tag: 'svg'
, все становится на свои места.т.к. для SVG
className
является не строкой, а инстансом SVGAnimatedString.Так что если нужна JS-функциональность, стоит завернуть SVG в какую-нибудь обертку. Ну либо пропатчить места, где используется
className.match
и подобные (например, наclassList
).А, понял. Я видел как оно используется в bem-components, сделаю так же.
@Defite А можешь подсказать направит к решению? а то я с тем же самым столкнулся
@Bot8 Получилось как-то так:
Понял. Но у меня не получится так. У меня svg блок внутри svg контейнера. Если обернуть дочерний svg блок в div, то он из контейнера вываливается. Пока извратился так
ошибка Uncaught TypeError: domNode.className.match is not a function. исчезла появилась еще хуже TypeError: b is undefined из jQuery
нужно еще думать
это я натупил