2014-10-02 100 views
0

我有一个数据集,其中的一个元素是另一个数据集(我们称之为“dataset2”),其长度可变。D3:可以创建元素的一个子集,但不会更新元素

我创建了一个复杂的情节:

var group = svg.selectAll('g').data(dataset) 
var groupEnter = group.enter().append('g') 

/* Add new elements */ 
groupEnter.append('line') 
    ... 
groupEnter.append('polygon') 
    ... 
groupEnter.append('text') 
    ... 

/* Update elements */ 
group.select('line') 
    ... 
group.select('polygon') 
    ... 
group.select('text') 
    ... 

到目前为止好。

现在,我想添加代表 “dataset2” 多边形:

var subGroup = group.selectAll('.someClass').data(function(d) { return d['dataset2'] }) 

var subGroupEnter = subGroup.enter().append('polygon') 
    .attr('class', 'someClass') 
    ... 

这似乎是工作;多边形已创建。

但是,我不能更新它们:

subGroup.selectAll('.someClass') 
    ... 

,没有任何效果。

如果我跑

subGroup.selectAll('.someClass') 
    .attr('...', function(d) { console.log(d); return ... }) 

没有输出。

我在做什么错?

回答

0

那是因为你没有实际添加someClass子组(至少在片段您展示)

也许

var subGroupEnter = subGroup.enter().append('polygon').classed('someClass', true) 

或类似的东西(硬更具体的只有碎片以上)

+0

你说得对:我在“.attr('class','someClass')”中指定了类,但是在上面的代码中没有提及它。我解决了这个问题。 – Mikhail 2014-10-02 13:31:24