0
http://jsfiddle.net/kWhF7/6/D3的.CALL()傳遞不正確地選擇在當前選擇的div
的開始的選擇是div容器元素。
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);
}
在我看來,噹噹前選擇是一個div(或不是一個SVG元素),則D3的.CALL功能似乎到了錯誤的元素傳遞給下一個.CALL功能。
我完全可以使用工作版本,但破損的版本看起來更像是一種d3編碼風格。
任何解釋爲什麼下一個.Call函數接收div而不是svg?
我們希望返回已更改的選擇,因爲以下.call()期望選擇是svg而不是div。如果我們按照上述說明進行操作,則必須重新配置其他所有選項.call()函數首先過濾選擇。 – dcryan22
但在不同的筆記上,爲什麼selection.call(createSVGCanvas)失敗並createSVGCanvas(選擇)工作? – dcryan22
啊,我糾正了。我會更新答案。 –