2016-08-01 7 views
3

私は、私のpiechartで動作するように制約を緩和しようとしています。 これはこの例のhttps://jsfiddle.net/thudfactor/HdwTH/に基づいていますが、使用されるリラックスした方法はv4ではこれ以上機能しないようです。
具体的な問題は、彼らが直接選択グループの配列にアクセスする方法である:D3 v4 - 選択配列へのアクセスと対応する要素の検索

textLabels = labelGroups.append("text").attr(...); 

if(again) { 
     labelElements = textLabels[0];  <------------- here 
     textLines.attr("y2",function(d,i) { 
      labelForLine = d3.select(labelElements[i]); 
      return labelForLine.attr("y"); 
     }); 
     setTimeout(relax,20) 
    } 

は、それはあなたが選択グループの配列にアクセスする方法D3 v4.xのと変わりましたか?
どうやってそれをどうやって行くのですか?

答えて

7

D3 4.0では、セレクションはもはや配列ではありません。 APIによると:

選択肢はもはやプロトタイプ連鎖注入を使用して配列。彼らは現在、単純なオブジェクトであり、パフォーマンスが向上しています。

{_groups: Array[1], _parents: Array[1]} 

正確にあなたが選択している内容に応じて:

だから、あなたconsole.log(textLabels)場合、あなたはつもりはこのような何かを参照してくださいね。そこから、例えばtextLabels._groupsを使って配列にアクセスすることができます。

は、すべての(null以外)の配列を返します。この選択の要素:

は、アレイを有するためには、APIによると、 selection.nodes()を、使用する必要があります。

+2

Gerardoさん、ありがとうございます、それは私にそれを動作させるための手がかりを与えました! 'selection.nodes()'はトリックを行い、v4では選択に含まれるノードの配列を返します。 – TommyF

+0

@ TommyF私はこれを100回upvoteすることができたらいいなあ。私は最後の40分間どこでも探していました。 –

+0

@ba_ulまあ、少なくともupvote * once *! :-) –

関連する問題