1

我毫不费力地创建了这个 http : //jsfiddle.net/langdonx/J2ykT/1/

如果您选中动画框,您将看到元素如何从右侧非常平滑地移入和移出(如果随机数生成器为您提供 0,请原谅这个错误)。

现在我正试图让元素从左侧逐步进入,但它似乎selection.insert没有像我预期的那样插入元素。你可以在这里看到我在说什么:

http://jsfiddle.net/wqPfR/

两者都1000附加1001div,但是当我插入999我的数组时,我希望.enter()为我提供999,但是我得到了,1001因为它似乎 D3 只附加元素并重新索引现有元素可以这么说。

我的问题是,由于我将要显示我的rect元素,我无法在创建新元素时重绘每个单元格。

我只是无法将 D3 用于这种技术,还是我缺少什么?

4

1 回答 1

4

默认情况下, .data() 按索引匹配现有元素。如果您希望它们按值或某些内部属性匹配,则必须为此提供一个函数。在您的示例中,这将起作用:

.data(data, function(d) { return d; });

.data() 的文档中

为了控制数据如何连接到元素,可以指定一个键函数。这取代了默认的按索引行为;对新数据数组中的每个元素调用一次 key 函数,并为选择中的每个现有元素调用一次。

于 2013-10-03T03:52:00.123 回答