使用d3.mouse事件作为工具提示的面积图的d3js角度指令

罗希特·南丹(Rohit Nandan)

我有这个http://plnkr.co/edit/fZXbWTGH4qTP4E9LkKyw?p=preview,如果您将鼠标悬停在面积图上,它应该已经在此处显示了工具提示,作为工具提示d3js区域图中从此处roi值的跟进

svg.append("path")
    .data([data])
    .attr("class", "area")
    .attr("d", area)
    .on("mouseover", function () {
        tooltip.style("display", null);
    })
    .on("mouseout", function () {
        tooltip.style("display", "none");
    })
    .on("mousemove", function (d) {
        var xPosition = d3.mouse(svg)[0] - 15;
        var yPosition = d3.mouse(svg)[1] - 25;
        tooltip.attr("transform", "translate(" + xPosition + "," + yPosition + ")");
        var x0 = x.invert(d3.mouse(svg)[0]);
        var y0 = y.invert(d3.mouse(svg)[1]);
        tooltip.select("text").text(d3.time.format('%Y/%m/%d')(x0) + " " + Math.round(y0));
    });;

我将d3js图表包装在有角度的指令中,代码几乎相同,但是有些事件如何生成此错误“ Uncaught TypeError:无法读取null的属性'sourceEvent'”

西里尔·谢里安(Cyril Cherian)

问题是您将d3 javascript作为服务加载,并且在代码中直接将其加载为如下脚本:

  <script src="https://d3js.org/d3.v3.min.js"></script>

在代码中,您正在创建d3service,如下所示:

angular.module('d3', [])
    .factory('d3Service', ['$document', '$q', '$rootScope',
    function ($document, $q, $rootScope) {
            var d = $q.defer();

            function onScriptLoad() {
                // Load client in the browser
                $rootScope.$apply(function () {
                    d.resolve(window.d3);
                });
            }
            // Create a script tag with d3 as the source
            // and call our onScriptLoad callback when it
            // has been loaded
            var scriptTag = $document[0].createElement('script');
            scriptTag.type = 'text/javascript';
            scriptTag.async = true;
            scriptTag.src = 'https://d3js.org/d3.v3.min.js';
            scriptTag.onreadystatechange = function () {
                if (this.readyState == 'complete') onScriptLoad();
            }
            scriptTag.onload = onScriptLoad;

            var s = $document[0].getElementsByTagName('body')[0];
            s.appendChild(scriptTag);

            return {
                d3: function () {
                    return d.promise;
                }
            };
}]);

好吧,两个都一样.. :)

2 d3加载的冲突是问题的根源,因此您无法在d3中获得鼠标事件。

因此,解决方法是删除d3service并直接在您的代码中使用d3,它将起作用。

这里的工作代码

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

多环图 d3js 中的工具提示

来自分类Dev

D3js无法显示渐变面积图

来自分类Dev

调整D3面积图

来自分类Dev

d3面积图未显示

来自分类Dev

使用D3提示的关闭问题

来自分类Dev

使用D3的量规图

来自分类Dev

使用D3的欧洲互动图

来自分类Dev

使用D3的量规图

来自分类Dev

使用D3的欧洲互动图

来自分类Dev

使用鼠标位置更改D3地图工具提示的类

来自分类Dev

使用鼠标位置更改D3地图的工具提示的类

来自分类Dev

如何使用d3js在循环中为甜甜圈图添加工具提示

来自分类Dev

如何使用D3 js在折线图中使用工具提示

来自分类Dev

如何使用D3 js在折线图中使用工具提示

来自分类Dev

图表中的D3工具提示

来自分类Dev

设置d3的工具提示样式

来自分类Dev

D3 Heatmap画布的工具提示

来自分类Dev

使用d3 js的水平条形图

来自分类Dev

工具提示d3js区域图中的roi值

来自分类Dev

d3js在单击时使工具提示停留

来自分类Dev

d3js SVG:title工具提示未显示

来自分类Dev

使用 intro.js 时 D3 工具提示几乎不可见

来自分类Dev

在d3 js中,如何在圆上附加其他文本作为工具提示

来自分类Dev

谷歌地图使用 d3 路径作为图层使用 (d3 v4)

来自分类Dev

d3折线图和面积图未使用新数据数组更新

来自分类Dev

D3对“ select”和“ selectAll”的使用

来自分类Dev

d3轨道使用变换旋转

来自分类Dev

使用D3 data()。enter()

来自分类Dev

使用D3的静态xAxis顺序