2016-09-02 6 views
-2

私は5つの既存のdiv要素と配列dataの5つの値を持っています。 現在d(d3)eachundefinedを返しますが、data[i]を返します。 dはD3 enter()を使用せずにdata[i]の値を返すようにdivdata[i]を関連付ける方法d3:データを手動で要素にリンクする方法

d3.selectAll("div")     
       .each(function(d,i){         
        console.log(d, i, data[i]); 
} 

+0

バインドされたデータがない場合、各関数に 'd'を渡すと何も返されません。 – ksav

+0

... 'i'は' selectAll( 'div')。each() 'のインデックスでなければならないので、この値を使って' data'配列にアクセスできます。しかし、これらは縛られていません。したがって、データ配列が変更された場合、divの配列と一致しなくなる可能性があります。 – ksav

+0

あなたの解決策は動作していますが、私は境界を学びたいと思います。 – beewest

答えて

0

解決策は、hereです。各dividを追加し、dataidkeyを使用して結合を使用します。

data = [ 
      {"key":"0","val":"10"}, 
      {"key":"1","val":"5"}, 
      {"key":"2","val":"8"} 
     ];  
... 
d3.selectAll("div.h-bar") 
       .data(data, function(d:any){ 
        var x = d? d.key : this.id; 
        return x; 
       })     
       .each(function(d:any,i:any){   
        console.log(d, i, data[i]); 
} 
0

私たちは、各要素のモデルにnewvalueを割り当てるためにdatum(newvalue)を使用することができます。

data        
       .forEach(function(d:any){   
        var item = d3.select('#div'+d.key).datum(d); 
       }); 
関連する問題