v-html
отображает только необработанный HTML. HTML-код, который вы возвращаете из метода getInfoWindowContent
, представляет собой шаблон Vue, который должен отображаться непосредственно компонентом Vue (и в зависимости от ваших настроек, если вы используете веб-пакет, вполне вероятно, что шаблоны будут скомпилированы с vue-loader
и не во время выполнения).
Я не знаком с пакетом vue2-google-maps
, но для достижения того, что вы хотите, вы не должны использовать v-html
и вместо этого поместить источник шаблона Vue непосредственно в <gmap-info-window>
. Замените все строковые интерполяции ${marker.description}
шаблонными интерполяциями Vue {{ activeMarker.description }}
(при условии, что activeMarker
объявлен заранее в объекте data
компонента, чтобы он был реактивным и отображаемым внутри шаблона). Возможно, вам придется использовать v-if
для управления видимостью частей шаблона, которые обращаются к activeMarker
в случае, если activeMarker
имеет значение NULL (если компонент gmap-info-window
не отображает свой слот, если свойство opened
имеет значение false) .
В идеале v-html
никогда не следует использовать, для одного это делает возможным XSS .