我在这方面走得很远,但被困在这里。
以下是我几乎完整的例子:
https://codesandbox.io/s/highcharts-vue-demo-forked-5pgv2h?file=/src/components/Chart.vue
我在做什么
- 我尽量保持简短,因为你可以看到例子中的代码。
- 在formatter函数中,我将悬停在上面的点分配给我的ParentComponent(Chart.vue)。
- 这个点是我的ChildComponent(TooltipFormatter.vue)的输入。
- 我使用vue-portal在highcharts-tooltip中渲染TooltipFormatter。
- 当从一个点切换到另一个点时,我必须关闭门户网站,这样它就停止在旧的工具提示中呈现门户网站,然后在nextTick上再次打开门户网站,以便在新的工具提示中呈现组件。
- 另外,在formatter-function中,我创建了TooltipFormatter的一个示例。称之为“模拟”。我返回这个mock的outerHTML,以便highcharts知道如何调整工具提示的大小和位置。此模拟将在门户再次打开后被替换。
我的问题 - 我想让传送门保持活力而不是关闭又打开。在我的示例中,在Chart之外有TooltipFormatter。你可以看到,进度条有一些动画。在ChartTooltip中,进度条没有动画,因为组件每次都会被杀死和创建。
- 我每次都必须通过new Vue(.)创建一个mock,这样highcharts就知道如何调整工具提示的大小和位置。我认为这可以用更好的方式处理,但没有找到更好的解决办法。我试着只模仿它一次,然后保存并重用这个模仿。但是如果TooltipFormatter比原来的mock更大,它将流出工具提示。(你可以测试这个,如果你取消勾选“每次创建模拟”,然后悬停在点“1”上)
注意
此问题与https://github.com/highcharts/highcharts-vue/issues/136有关
但是我在composition-API上遇到了困难,当我把他的例子翻译成options-API时,我无法让它工作。你可能认识到我的codesandbox-example是他的一个分支。
1条答案
按热度按时间lymnna711#
我得到了它。我在@Denyllon(见Github-Link)解决方案上工作。
这里,在render()函数中使用JSX
https://codesandbox.io/s/highcharts-vue-demo-forked-zv4czp?file=/src/components/Chart.vue
然后我取出了JSX,仍然使用render()
https://codesandbox.io/s/vue-tooltip-working-native-render-gg6pf5
最后但并非最不重要的是,我拿出了JSX在所有,只是使用
https://codesandbox.io/s/vue-tooltip-working-template-qz7wvw?file=/src/components/Chart.vue