Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将函数传递给d3';(二)_Javascript_D3.js_Callback_Transition - Fatal编程技术网

Javascript 将函数传递给d3';(二)

Javascript 将函数传递给d3';(二),javascript,d3.js,callback,transition,Javascript,D3.js,Callback,Transition,这将调用path.data(partition.value(value).nodes),其中partition是一个d3.layout.partition,使用value()函数来布局节点。最初,数据通过svg.datum(root)传递到路径,但在第一次调用和输入更改时,只有函数分区.节点传递到数据() 我假设data()然后只访问已经绑定到元素的内容,但我想澄清一下,因为path被定义为enter组,这在幕后是如何完成的。非常感谢。代码摘录如下 var partition = d3.layo

这将调用
path.data(partition.value(value).nodes)
,其中
partition
是一个
d3.layout.partition
,使用
value()
函数来布局
节点。最初,数据通过
svg.datum(root)
传递到
路径
,但在第一次调用和
输入
更改时,只有函数
分区.节点
传递到
数据()

我假设
data()
然后只访问已经绑定到元素的内容,但我想澄清一下,因为
path
被定义为
enter
组,这在幕后是如何完成的。非常感谢。代码摘录如下

var partition = d3.layout.partition()
    .sort(null)
    .value(function(d) { return 1; });

d3.json("/d/4063550/flare.json", function(error, root) {
  node = root;
  var path = svg.datum(root).selectAll("path")
      .data(partition.nodes)
    .enter().append("path")
     ...


  d3.selectAll("input").on("change", function change() {
    var value = this.value === "count"
        ? function() { return 1; }
        : function(d) { return d.size; };

    path
        .data(partition.value(value).nodes)
      .transition()
        .duration(1000)
        .attrTween("d", arcTweenData);
  });

为了理解这里发生了什么,看看教程是很有用的。虽然这里的用例不同,但从技术上讲,它是这样的——初始数据被传递给后面对
.data()
的调用

嵌套选择的一般模式是
.data(函数(d){return…;})
。这也是这里正在发生的事情;上述代码的长版本是

path.data(function(d) { return partition.value(value).nodes(d); })

其中,
d
是绑定到父节点的数据,
root

我知道原始调用和
onchange
调用本质上是等效的,只需更改访问器即可。我的问题是,即使在最初调用
data(partition.nodes)
partition.nodes
也是一个确实返回数组的函数,但没有数据直接传递给它。我问的是从
svg.datum(root)
传递的明显的隐式数据。非常感谢。抱歉,我不清楚(事实上对细节的理解是错误的!)——我已经解决了这个问题,希望它现在能回答您的问题。