首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Typescript/d3,无法动态提供符号类型

Typescript/d3,无法动态提供符号类型
EN

Stack Overflow用户
提问于 2019-06-27 20:10:10
回答 1查看 207关注 0票数 1

我正在尝试扩展一个网络可视化工具,使用户能够为网络中的节点设置自定义符号。当尝试动态设置此形状时,我得到错误:

代码语言:javascript
复制
Error: <path> attribute d: Expected moveto path command ('M' or 'm'), "function n(n,r){…".

在我看来,这不是给它一个函数返回的实际路径数据,而是传递函数本身。

我已经看过这里的Setting d3 symbol conditionally和这里的Passing a function to .attr('d')?类似问题的javascript代码。我也在typescript here https://github.com/abchakra/d3_work/blob/7b602690615790d38b00832750ead637c66e205d/gantt_ts/app/ts/lib/ganttChart.ts中尝试了类似的用例,但它似乎使用了不同版本的typescript?(在.attr("d", d => d3.symbol().size(2400).type(d.symbol)());行中,没有为d提供类型?)

我已经稍微简化了我想要做的事情,让问题变得更加明显。直观地说,下面的代码应该将符号的类型指定为“circle”,实际上,如果我只是将字符串粘贴到那里(.attr('d', d3.svg.symbol().type('circle'))),它就可以正常工作。但是,如果我试图以任何方式传递d参数,函数本身似乎是作为路径传递的,我得到了上面的错误。

代码语言:javascript
复制
    var shape = function(d: any){
        return 'circle';
    }

    visualNodes = nodeLayer.selectAll('nodes')
        .data(nodes)
        .enter()
        .append('path')
        .attr('d', (d: any) => d3.svg.symbol().type(shape(d)))
        .attr('class', 'nodes')
        .style('fill', (n: dynamicgraph.Node) => getNodeColor(n))
         ...
        })

我希望能够使用shape变量中的d参数来动态分配形状,我可能可以通过某种方式来解决这个问题-但我至少想了解为什么d3使用函数本身作为路径,以及为什么通过传递d会改变这一点。

EN

回答 1

Stack Overflow用户

发布于 2019-06-28 16:28:54

.attr('d', (d: any) => d3.svg.symbol().type(shape(d))())给出了一个TS2349错误--所以我之前已经忽略了它--但是如果这个错误被抑制了,它似乎可以正常工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56790666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档