amchart v4中的工具提示问题,未在饼图切片上重新加载

时间:2018-11-29 15:22:14

标签: amcharts

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

View v=inflater.inflate(R.layout.fragment_1_layout, container, false);
return v;}

series.slices.template.events.on("over", function(ev) { series.slices.template.tooltipHTML=showHtml(ev, series.name); }, this); 中的工具提示问题:无法在饼图切片上重新加载。

我正在使用自定义工具提示,例如在鼠标悬停时生成自定义html。一切正常,但是当我将光标从一个切片移动到另一个切片时,弹出html不会刷新。当我将鼠标移出然后再次将鼠标悬停在同一切片上时,弹出html显示正确的数据。

我认为以前的html数据缓存在某个地方。请帮助我。

1 个答案:

答案 0 :(得分:1)

查看showHtml在做什么可能会有所帮助。但是,如果没有这些,我们将尽一切努力。

此代码存在一些问题。

从代码角度来看,最明显的是这一行:

series.slices.template.tooltipHTML=showHtml(ev, series.name);

您要重置模板的tooltipHTML而不是实际切片的tooltipHTML。默认情况下,模板的applyOnClonestrue,因此它将传播到所有其他切片,因此如果可行,事故。如果showHtml中有任何不依赖于data placeholders的特定于切片的设置,这将使TooltipHTML停留在下一个经过切片的切片上。

但是,真正的问题是方法。

只要设置了tooltipHTMLtooltipText,悬停时就会出现工具提示

在这种情况下,最好为tooltipHTML使用adapter

作为一项快速测试,以了解哪个在竞争条件中获胜,悬停事件或tooltipText / HTML适配器,分别为每个处理程序创建一个处理程序,然后将鼠标悬停在一个切片上:

series.slices.template.events.on("over", function(){
  console.log("hover");
});

// override tooltipText so tooltipHTML is actually used
series.slices.template.tooltipHTML = "something...";
series.slices.template.adapter.add("tooltipHTML", function(tooltipHTML) {
  console.log("adapter");
  return tooltipHTML;
});

// console:
// "adapter"
// "hover"

您会发现适配器首先触发,因此,当您将鼠标悬停时,工具提示及其HTML及其所有内容已经在使用中。

因此,使用适配器,只需确保调整您的showHtml函数,使其第一个参数本身就使用target而不是event(可能不需要使用另一个参数tooltipHTML被修改,因为它将始终被发送原始的tooltipHTML未经格式化的字符串,因此可以手动将其称为字符串还是变量)。

适配器看起来像这样:

var originalTooltipHTML = "<strong>{country}: </strong>"
series.slices.template.tooltipHTML = originalTooltipHTML;
series.slices.template.adapter.add("tooltipHTML", function(tooltipHTML, target) {
  // #2: If we had used an event, here you would work on the target itself, event.target, not the template.
  // The showHtml might not even be needed, perhaps whatever it does can go in here instead.
  return showHtml(target);
});

这是一个演示,其中包含所有内容:

https://codepen.io/team/amcharts/pen/a0122e572d27cf513a78384345cad3a6