【问题标题】:Amcharts 4 TreeMap bullet linkAmcharts 4 TreeMap 项目符号链接
【发布时间】:2018-10-12 09:41:49
【问题描述】:

我有来自 amcharts4 的一级树形图。

我试图在单击每个项目符号时为其设置一个链接,但无法实现我想要的。

正如文档所说,我尝试过:

level1_bullet.label.url = "https://www.google.com/";

level1_bullet.url = "https://www.google.com/";

两者都不起作用,我可以添加

level1_bullet.label.html = "<a href='https://google.com/'>{name}</a>";

但是 truncate 选项有一个问题,它不起作用,我可以看到对于最小的子弹来说太大的名字,换​​行也没有帮助。

【问题讨论】:

  • 您能提供更完整的代码 sn-p 或演示吗?我无法复制这个问题。看到这个CodePen demo bullet1.label.url = "https://www.google.com/"; 工作得很好。
  • 谢谢伙计,我必须从 npm 更新 amcharts 现在一切正常。
  • 如何将每个项目符号 url 与数据中的名称连接起来? bullet1.label.url = "/example/" + "{name} 不起作用

标签: javascript graph charts amcharts treemap


【解决方案1】:

要将LabelBullet 转换为链接,请尝试:

level1_bullet.label.url = "https://www.google.com/";

如果我们想要动态网址,我们将不得不使用an adapterurl 是一个不真正用于显示的简单字符串,因此它不会通过our string formatting,这意味着像{name} 这样的占位符不会被解析。幸运的是Labels 有an adapter for their url。它可能看起来像这样:

level1_bullet.label.adapter.add("url", function(url, label) {
  var query = "";
  var data = label.dataItem;
  if (data.dataContext && data.dataContext.name) {
    query = "?q=" + data.dataContext.name;
  }
  return url + query;
});

适配器的处理程序将url 设置为Label(在本例中为"https://www.google.com/")作为第一个参数,Label 实例作为第二个参数。我们return 最终成为我们自定义格式的url,即它不会永久设置它,每次您的应用程序确定url 的值应该是什么时都会运行它。

我在这里创建了一个演示:

https://codepen.io/team/amcharts/pen/79194dfcfccaa05f5ebe20e1095f3087

让我知道这是否有意义,如果这对您想要做的事情有帮助。

【讨论】:

  • @JanuszAmi 顺便说一句,我已经在 GitHub 上为此创建了一个功能请求,如果有兴趣请订阅:github.com/amcharts/amcharts4/issues/468
  • @JanuszAmi 到今天为止,在 beta.61 中,databinding placeholders in urls 现在已受支持,例如level1_bullet.label.url = "/example/{name.urlEncode()}";。请务必清除缓存/更新 amCharts v4 包。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
  • 2012-04-28
  • 1970-01-01
相关资源
最近更新 更多