【发布时间】:2018-06-11 07:19:48
【问题描述】:
我正在尝试在我使用 d3.js v3 创建的散点图上实现注释功能。当我单击每个数据点时,文本框会出现在我输入文本的位置。添加文本后,它会显示为该特定数据点的工具提示。我的执行方式是:
eventGroup.select("circle")
.attr("class", "dot")
.attr("r", 4)
.attr("cx", 10)
.attr("cy", 10)
.attr("fill", function(d) {
return d.evtColor ? d.evtColor : "#229ae5";
})
.attr("stroke", function(d) {
return d.evtColor ? d.evtColor : "#229ae5";
})
.attr("stroke-width", 2)
.on("contextmenu", function() {
var position = d3.mouse(this.parentNode);
d3.select("#context-menu")
.style("position", "absolute")
.style("left", (d3.event.pageX - 220) + "px")
.style("top", (d3.event.pageY - 70) + "px")
.style("display", "inline-block")
.on("click", function() {
d3.select("#context-menu").style("display", "none");
d3.select("#annotateBox")
.style("position", "absolute")
.style("left", (d3.event.pageX - 220) + "px")
.style("top", (d3.event.pageY - 70) + "px")
.style("display", "inline-block");
});
});
在 HTML 文件中我定义了 addAnnotation 按钮和 textarea 我将在其中添加文本:
<ul id="context-menu" class="menu" style="display:none;">
<li class="addAnnotation"><a href="">Add Annotation</a></li>
</ul>
<div id="annotateBox" style="display:none;">
<div class="annotateInput" style="display:table-caption">
<textarea rows="3" cols="50" maxlength="100" style="color:black" ng-model="vm.annotateText" autofocus></textarea>
<button type="button" class="btn btn-primary pull-right" ng-click="vm.removeButton()">Done</button>
</div>
</div>
我接下来要做的是,在文本区域中添加的文本在单击数据点时弹出,我希望该文本绑定到该特定数据点而不是全部。有没有办法将文本区域分配给它被调用的事件,而不是对所有人都通用。目前,我作为一个数据点的一部分添加的任何文本也会显示在其余数据点中。
【问题讨论】:
标签: javascript html angularjs d3.js