2014-10-02 105 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

相關問題