Директива v-html
просто передает данные, которые вы передаете ей, непосредственно в DOM как innerHtml
этого элемента.Это замечательно, если вы хотите передать что-то, что уже является HTML, но не так здорово, если Vue нужно что-то с этим сделать.
Вместо этого вам нужно использовать сам шаблон.Если это находится в самом компоненте, как здесь, это просто.Вместо того, чтобы генерировать какую-либо строку HTML, вместо этого поместите все это в шаблон и используйте обозначения усов, v-if
и т. П. Для управления тем, что и где показано.Если вместо этого у вас есть отдельный компонент, вы можете использовать слоты для управления тем, что передается в ваше информационное окно.Затем вы передаете контент в этот слот через шаблон родителя.
Чтобы устранить проблему, вам нужно сделать что-то подобное.Сначала присвойте свой маркер некоторой переменной, которую мы можем использовать в шаблоне.Мы можем просто повторно использовать infoContent
в этом случае.
toggleInfoWindow: function (marker, idx) {
this.infoWindowPos = ({
lat : marker.latitude,
lng : marker.longitude,
}
);
this.infoContent = marker;
//check if its the same marker that was selected if yes toggle
if (this.currentMidx == idx) {
this.infoWinOpen = !this.infoWinOpen;
}
//if different marker set infowindow to open and reset current marker index
else {
this.infoWinOpen = true;
this.currentMidx = idx;
}
},
Теперь мы изменим шаблон, чтобы ваш html и компоненты были внутри gmap-info-window
.Поскольку мы присвоили нашему активному маркеру infoContent
, мы ссылаемся на него здесь.
<gmap-info-window
:options="infoOptions"
:position="infoWindowPos"
:opened="infoWinOpen"
@closeclick="infoWinOpen=false"
>
<div class="info_window container">
<h3>{{ infoContent.name }}</h3>
<a :href="`/location/${infoContent.slug}`"><div class="mx-auto btn btn-success">More Info</div></a>
<router-link :to="`/location/${infoContent.slug}`" class="mx-auto btn btn-success">RL More Info</router-link>
</div>
</gmap-info-window>
Теперь, когда вы вызываете toggleInfoWindow
, информационное окно теперь будет обновляться с новой информацией маркера.