2013-01-10 32 views
1

我有我想要顯示縮略圖的項目列表。但是,如果有任何縮略圖被記錄爲丟失,我想顯示「丟失的圖像」圖像。該列表可能很長,所以我希望在需要時重複使用相同的「丟失圖像」。DART nodes.add()添加元素的多個副本

但是,下面的測試代碼僅導致圖像的一個副本 - 最後一個副本添加。我的問題:我怎樣才能多次添加一個Element而不必每次都做一個new()?

ImageElement img = new ImageElement(); 
img.src= "http://myserver/missing.png"; 
... 
div.nodes.add(img);  
div.appendText('11111'); 
div.nodes.add(img);  
div.appendText('22222'); 
div.nodes.add(img);  
div.appendText('33333'); 
+0

好像是能夠申報IMG爲「最終」解決方案的動態,它已經加載之後即可能是部分飛鏢功能。 .. –

回答

2

使用該代碼,您不會向div元素添加新圖像。 div.nodes.add(img)實際上附加了img作爲div元素下的最後一個節點(nodes.add(node)在引擎蓋下使用了Node.appendChild)。

要使其正常工作,必須爲每個div.nodes.add(img)創建一個新的ImageElement。您也可以使用Node.clone()創建新的ImageElement

喜歡的東西,你的情況如下:

final img = new ImageElement(src:"http://myserver/missing.png"); 
div.nodes.add(img.clone(false)); 
div.appendText('11111'); 
div.nodes.add(img.clone(false)); 
div.appendText('22222'); 
div.nodes.add(img.clone(false)); 
div.appendText('33333'); 
+0

好的,這是有道理的。但是......看起來太浪費了......是不是可以抓住一個指向實際位圖的指針,並且每次都將它粘貼到新元素中(從而避免佔用RAM的同一位圖的許多副本)? –

+1

這不是一個特定於Dart的問題,但是它介紹了瀏覽器如何處理DOM呈現和資源加載。我希望/相信瀏覽器做得很好。 –