Я пытаюсь создать пользовательскую всплывающую подсказку для apexcharts, например: https://apexcharts.com/docs/options/tooltip/#
tooltip: {
custom: function({series, seriesIndex, dataPointIndex, w}) {
return '<div class = "arrow_box">' +
'<span>' + series[seriesIndex][dataPointIndex] + '</span>' +
'</div>'
}
}
и это работает, но когда я устанавливаю взамен какой-то компонент vue, ничего не отображается.
tooltip: {
custom: function({series, seriesIndex, dataPointIndex, w}) {
return '<MyComponent/>'
}
}
<template>
<div>Just simple component</div>
</template>
<script>
export default { name: "MyComponent" }
</script>
Почему это происходит и как это исправить?
@PaulBollerman, хорошо, я добавил минимальный пример. Не могли бы вы показать, как это сделать?
Вы пытались сослаться на компонент с помощью kebab-case? Например. <мой-компонент/>? См. vuejs.org/v2/guide/components-registration.html#Name-Casing
@PaulBollerman, спасибо за ответ. Я пробовал, но это не помогает
Чтобы Vue отобразил компонент правильно, вам нужно указать это в пользовательской функции всплывающей подсказки:
tooltip: {
custom: ({series, seriesIndex, dataPointIndex, w}) => {
// create component constructor
var TooltipComponent = Vue.extend({
template: '<my-component/>'
});
// create an instance of tooltip and mount it
var tooltip = new TooltipComponent();
tooltip.$mount();
// Return the html
return tooltip.$el.outerHTML;
}
}
Если вам нужны данные или другая реактивность, это становится немного сложнее, см. https://v2.vuejs.org/v2/api/#Vue-extend для получения дополнительной информации.
Вероятно, это связано с тем, что всплывающая подсказка не отображается с помощью vue. Вам нужно дать пользовательской всплывающей подсказке функцию рендеринга vue, которая будет возвращать компонент. Однако без минимального примера кода того, чего вы пытаетесь достичь, трудно помочь.