2015-11-19 97 views
1

我有对象的数组像这样的对象数组:D3.js没有创造元素

var dataObj = [{stuff:"thing"}, {other:"something"}, {you:"get"}, {the:"idea"}]; 

而且我试图在这一个DIV追加与键按对象文本:

myElement 
.selectAll("div.myClass") 
.data([dataObj]) 
.enter() 
.append("div") 
.attr('class', 'myClass') 
.text(function(d, i) { 
    return Object.keys(d)[i]; 
}); 

但是这里面创建仅myElement一个div元素,像这样:

<div id='myElement'><div class='myClass'>stuff</div></div> 

什么我错过了吗?

我也试过

myElement 
.selectAll("div.myClass") 
.data(dataObj) 
.enter() 
.append("div") 
.attr('class', 'myClass') 
.text(function(d, i) { 
    console.log("This never shows"); 
    return Object.keys(d)[0]; 
}); 

无济于事。

回答

1

dataObj已经是一个数组。所以它看起来像你不需要放在阵列中

myElement 
.selectAll("div.myClass") 
.data(dataObj) 
.enter() 
.append("div") 
.attr('class', 'myClass') 
.text(function(d, i) { 
return Object.keys(d)[i]; 
}); 
+0

我原本试过,文本回调甚至从未被调用过。查看更新的OP。 –

+0

但它确实有效:看到一个活的例子 http://jsfiddle.net/as9ekLLx/ – omer727

+0

http://jsfiddle.net/freer4/3wqey0kg/是的,我做了我自己的大声笑它确实工作。但没有在我的现场代码工作......也许我错过了一些东西。 –