2016-03-15 13 views
5

Woher weiß ich, wann ein Polymerelement bereit ist? Geben, dass:Ready-Event für dynamische Polymerelemente

Es wird dynamisch hinzugefügt, wie:

var ele = document.createElement('my-custom-element'); 
document.body.appendChild(ele); 

jetzt Also, wenn ich ele.myCustomMethod() nenne es wird scheitern, weil es noch nicht fertig ist (in FF/IE/Safari mit webcomponent-lite.js)

Was ich jetzt tun, ist Anruf this.fire('ready') innerhalb des Polymerelement ready() Funktion und ele.addEventListener('ready',()=>{ele.myCustomMethod();})

es hören Aber dies alles Code sehr schwer machen, zu schreiben. Und manchmal verwende ich $(body).html('<my-custom-element />'), und es macht die Dinge komplizierter.

Meine Frage ist: Gibt es einen besseren Weg, dies zu tun?

Vielen Dank.

+0

Wenn Sie sagen, 'ele.myCustomMethod()' fehl, es wird scheitern, weil es nicht definiert ist oder ist das Problem in dieser Funktion? – Kable

+0

@Kable: Es ist fehlgeschlagen, weil es nicht definiert ist. Es ist undefiniert, weil, glaube ich, google polymer (oder webcomponent polyfill) es noch nicht fertig initialisiert hat. – garyx

+0

hast du eine Antwort gefunden? Ihre Lösung ist die gleiche, die ich mir ausgedacht habe und ich bin auch nicht sehr glücklich darüber. – three

Antwort

-2

Sie können versuchen, zuerst im Fenster auf das WebComponentsReady-Ereignis zu warten.

Quelle: https://github.com/webcomponents/webcomponentsjs#webcomponentsready

+1

Danke. Ich habe das gehört. Aber das Problem in den Fragen ist wann Ich füge das Element spontan hinzu und glaube nicht, dass es das Ereignis "WebComponentsReady" erneut auslösen wird – garyx