Ich habe ein benutzerdefiniertes Element, das selbst ein benutzerdefiniertes Element hostet.Wie kann ich auf den Host eines benutzerdefinierten Elements zugreifen?
<polymer-element name="flex-nonvisual">
<template>
<polymer-flex-layout></polymer-flex-layout>
</template>
</polymer-element>
Jetzt in attached()
(oder einen anderen Rückruf) von PolymerFlexLayout
Ich möchte das Klassenattribut des flex-nonvisual
Element einzustellen.
In Javascript sieht der Code wie this.parentNode.host.classList.add('someclass');
In Dart in attached()
(nach dem Aufruf von super.attached()
) this.parent
ist null und ich konnte keinen anderen Verweis auf das Host-Element finden.
Wie kann ich das in Dart tun?
Eine kleine Bemerkung: Ich würde diese schlechte Praxis betrachten, da sie die Verkapselung der Polymer-flex-Layout-Komponente bricht. Im Allgemeinen sollte eine untergeordnete Komponente niemals Eigenschaften festlegen oder Methoden auf einem übergeordneten Element aufrufen. Das Kind sollte ein Ereignis auslösen, das der Eltern angehört und sich entscheidet, seine eigenen Eigenschaften zu ändern. –
Sie haben Recht, ich habe nicht über alternative Wege nachgedacht.Ich bin gerade dabei, Polymer-Elemente aus Javascript zu portieren und habe versucht, das Gleiche in Dart zu tun, was sie in JS getan haben. Vielen Dank für Ihre Hilfe aus der Sackgasse ;-). –