2013-04-16 50 views
5

D3 documentation說:合併`enter`選擇到`update`選擇

當你追加 或插入輸入選擇併入更新選擇。此方法減少了輸入和更新之間的代碼重複。單獨將運算符應用於輸入和更新 選擇,您現在可以在輸入節點後將它們應用於更新選項 。在極少數情況下,只想在更新節點上運行 運算符,則可以在輸入新節點之前在更新 選擇中運行它們。

我不明白短語merge into在第一句中的含義。有人可以解釋這一點嗎? (也許我錯過了一些標準術語數據庫的連接?)

回答

4

這意味着你已經應用了appendinsert操作的enter選擇後,其內容將成爲update選擇的一部分。也就是說,你增加了update選擇的大小。正如文檔所述,這樣做的目的是爲了減少代碼重複。附加一個新元素後,必須設置各種屬性(例如大小,顏色,位置)。在許多情況下更新的元素必須設置相同的屬性,並且可以使用相同的代碼。

數據庫等效將從不同的表(enterupdate),然後被選擇行施加一些操作以從選定enter將它們添加到update行。這個比喻並不完全起作用,但它可以幫助你理解發生了什麼。

+0

但是'enter'不返回'update'集合,對嗎?所以如果我這樣鏈接:'d3.select(「body」)。selectAll(「p」).data(dataset).enter()。append(「p」).text(function(d){return d; });'我只在'enter'集合上工作? – max

+0

是的。如果您想要對其進行操作,您仍然需要保存更新選項。 –

+1

直到我看到您的答案時,我纔得到這個結果,並編輯了文檔wiki以嘗試使其更清晰。不能保證更改會堅持,但我嘗試過。 – mgold