Javascript d3和x27;当当前选择为div时,s.call()传递错误的选择
开始选择是div容器元素Javascript d3和x27;当当前选择为div时,s.call()传递错误的选择,javascript,svg,d3.js,Javascript,Svg,D3.js,开始选择是div容器元素 function chart(selection) { createSVGCanvas(selection)// <---- Works //selection.call(createSVGCanvas) // <---- Doesn't Work .call(calculateScales) .call(dataLayer) return this; } function createSVGCanvas(s
function chart(selection)
{
createSVGCanvas(selection)// <---- Works
//selection.call(createSVGCanvas) // <---- Doesn't Work
.call(calculateScales)
.call(dataLayer)
return this;
}
function createSVGCanvas(selection)
{
//This properly returns an svg element, but in the broken version
// the NEXT .call'd function (calculateScales), has a selection of the
// div#svg_canvas, NOT the svg.
return selection.append("svg")
.attr("width", config.width)
.attr("height", config.height);
}
功能图(选择)
{
从以下位置创建SvgCanvas(选择)/:
无论指定函数的返回值如何,调用运算符始终返回当前选择
也就是说,您的预期用途显式不起作用。JSFIDLE中未注释的代码是正确的方法。我们希望返回更改的选择,因为下面的.call()希望选择是svg而不是div。如果我们按照您上面所述的做,那么我们必须重新配置所有其他.call()函数首先筛选这些选择。但另一方面,为什么selection.call(createSVGCanvas)失败,createSVGCanvas(selection)工作?