Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/35.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
Data binding 在d3.js中,如何在数据绑定中保留索引I(或强制/强制组索引j在其中的位置使用),以进行嵌套选择?_Data Binding_D3.js_Indexing - Fatal编程技术网

Data binding 在d3.js中,如何在数据绑定中保留索引I(或强制/强制组索引j在其中的位置使用),以进行嵌套选择?

Data binding 在d3.js中,如何在数据绑定中保留索引I(或强制/强制组索引j在其中的位置使用),以进行嵌套选择?,data-binding,d3.js,indexing,Data Binding,D3.js,Indexing,这里的上下文是d3.js中的标准(基于索引i)数据绑定,即应该保留索引的地方 根据我的经验,选择模式、索引保存和数据绑定构成了一个战争区域。除了最简单的情况外,在所有情况下,获得一个,就会失去另一个。。(博主们,这一领域将从严格的真理表中受益匪浅。) 例如,对于格式为d3.selectAll().selectAll()的嵌套选择,数据绑定点处唯一可用的索引是组或父节点的索引:j,尽管新旧选择都通用,但不能使用该索引 假设(因为它只找到第一个元素,并且未定义所有键/值对)d3.selectAll(

这里的上下文是d3.js中的标准(基于索引i)数据绑定,即应该保留索引的地方

根据我的经验,选择模式、索引保存和数据绑定构成了一个战争区域。除了最简单的情况外,在所有情况下,获得一个,就会失去另一个。。(博主们,这一领域将从严格的真理表中受益匪浅。)

例如,对于格式为d3.selectAll().selectAll()的嵌套选择,数据绑定点处唯一可用的索引是组或父节点的索引:j,尽管新旧选择都通用,但不能使用该索引

假设(因为它只找到第一个元素,并且未定义所有键/值对)d3.selectAll()。select()不是选项,是否有基于j索引强制绑定的方法?也许是某种键函数,但指定索引j的使用

在过去,我通过使用对象过滤器进行选择和索引跳转来克服这个问题,但坦率地说,这是混乱和不透明的

尽管可能是基于误解(例如,一个明显的连锁问题是给定j指数中存在多个元素),但对建议或见解感到高兴


Thug

使用选择的
。each()
方法和内联函数是一种访问子数据以及通过外部作用域访问父数据的方法。大概是这样的:

var parents = d3.selectAll('.parent-class').data(parentData)

parents.each(function(dParent, iParent) {

  var currentParent = d3.select(this)
  var children = currentParent
    .selectAll('.child-class')
    .data(dParent.children);

  // Now, e.g. if child color should depend on the parent data (and child data):
  children.attr('color', function(dChild, iChild) {
    // Here you have access to the parent's and the child's datums, 
    // as well as their indices
  });

});

这是你想要达到的目标的解决方案吗?

很难相信,但我总共花了两周时间找到了:所谓的后代组合子“ab”

该描述提供了足够的提示来保证测试

简单地说,它保留所选元素A的索引i(即使A和B由多个间隙svg:g组元素分隔,也会这样做)。例如:

d3.selectAll(".parent_class .child_class");

正如我在评论你之前关于同一主题的问题时所说,D3方法是完全重新绑定数据。如果您可以添加一个具体的示例,说明这是不可能的,或者无法实现您想要的。Catch22:必须使用d3.selectAll().selectAll()来获得正确的选择,这将阻止任何基于索引的数据绑定。相关问题是的,同一主题编号。我之前的问题是关于在特定索引处绑定数据(如果我可用,这将起作用),这个问题是关于如何切换索引以首先允许数据绑定。我仍然不理解你所说的基于索引的数据绑定是什么意思。所谓基于索引,我指的是(也就是说标准)selection.data()绑定,即不被键函数修改。当只提供第一个(ie值)参数时就是这种情况。非常有希望,但目前是“.data(dParent.children);”引发“ReferenceError:引用未定义的属性dParent.childrent”。顺便说一句,我还遇到一个建议显式重做数据联接的例子:“d3.selectAll(“.parent class”).selectAll(“.child class”).data(函数(d){return[d];});”,但这就留下了d。也就是说,在我的父母和currentParent之间有几个svg:g组层:结构上尽可能简单,但多分支..哦,
dParent.children
不是内置的。它假定父数据与其子数据具有某种链接,但应替换为要用于检索子数据的任何方法。另外,请注意,在使用函数作为第一个参数的
data()
示例中,您有机会同时计算父数据和子数据(以及索引)。
select
selectAll
的语法反映了CSS3。(提前知道会很好,对吗?)