2015-09-29 19 views
0

我正在製作不含聚合物的自定義元素,我不使用HTML標記。因此,我必須構建內部元素並在運行時附加它。 MyComponent只是經典的View。我可以設置一些數據{val: 97.0, unit: '%'},組件顯示它。什麼是創建和附加兒童的最佳時間?

所有初始化我在attacheddomReady事件(我仍然沒有得到最好的地方)。在這裏,我可以將數據設置爲附加的實際元素('97 .0%'到span元素)。

所以,我可以在構造函數中MyComponent.created()創建內部元素,在attached事件,在domReady事件或曾經在工廠的構造是這樣的:

factory MyComponent (data) { 
    var component = new Element.tag('my-component'); 
    component.data = data; 
    component.children.add(
    new Element.span() 
    ..classes.toggle('display', true) 
); 
    return component; 
} 

這裏是一個問題:哪裏是最好的地方:

  1. 構建元素與new Element.tag('my-component');;
  2. 設置它的風格,類等屬性;
  3. 將它附加到`children.add(component);?

謝謝。

+2

有在標題笑話的地方。 – ViRALiC

+0

你是指無限循環問題嗎?我不知道這件事。 – kelegorm

回答

1

就我所知,除非我不鼓勵使用 MyComponent.created()來操縱DOM,因爲這已知會導致無限循環。
如果您在同步代碼中操縱DOM,則呈現會被阻止,直到您的代碼完成(無論何時添加)。
如果您在DOM更新(例如從服務器獲取數據)之間執行異步操作,瀏覽器可能會在更新之間重新渲染,這可能很昂貴。我認爲在這種情況下,等到您獲得所有信息並一次完成所有DOM更新後,效率會更高。

+0

所以,你只給我「附件」或「domeReady」事件。好的,在這種情況下,我必須選擇「附件」。謝謝。 – kelegorm

+0

工廠構造函數也不錯,只是不是'created()'構造函數。 –

相關問題