2017-01-23 3 views
0

Ich versuche, mehrere Polymerelemente bei einer bestimmten Elementbedingung zu verstecken. Ich bin mir bewusst, dass es mehrere Möglichkeiten gibt. In meinem opinon ist der einfachste Weg, dies zu tun, um eine neue CSS-KlasseVerbergen Polymerelement

.invisible { 
    display: none; 
} 

und fügen Sie ihn in der Klassenliste der Polymerelemente

this.$.icon.classList.add('invisible'); 
this.$.text.classList.add('invisible'); 
this.$.button.classList.add('invisible'); 

Das hat aber keinen Einfluss auf die Elemente einzuführen. Die Elemente sind noch sichtbar. Ein Blick in die elment Inspektor zeigt, dass die Klasse hinzugefügt wurde:

class="style-scope parent-elem invisible" 

Wo Eltern-Elem der Name des übergeordneten Elements ist.

Kann mir jemand erklären, warum das Element nicht versteckt wird?

Danke

Mit besten Grüßen, Meisen

+0

Hallo, manchmal, je nachdem, wie Sie Ihre Elemente implementiert sind und die Interaktion mit jeder andere kann es sein, weil die neue Klasse im Schatten dom oder Lichtdom verborgen ist. Ich hatte ein ähnliches Problem mit einer externen Lib und die Verwendung von 'Polymer.dom.flush()' nach dem Hinzufügen der Klasse löste es. – Arfost

Antwort

2

Sie easly auf Elemente mit Eltern property manipulieren kann. Versuchen Sie in Ihrem Element properties hinzufügen property

properties: { 
... 
elementsVisible: { 
    type: Boolean, 
    value: true 
} 
... 
} 

dann in Ihrem method manipulieren diese property und in html Komponente gesetzt

<element hidden="[[!elementsVisible]]" ></element> 

ps. wenn dies nicht funktionieren können Sie hinzufügen in parent css

[hidden] { 
    display: none; 
} 

manchmal Polymerelemente besondere Mixins benötigen, um ihre CSS anpassen, aber versteckt in der Regel funktioniert :)

+0

danke für deine anser. Ich verstecke Elemente, wenn die Textlänge einiger Eigenschaften des Hosts <0 ist. Also muss ich ein zusätzliches Flag für jede Texteigenschaft erstellen. In der obigen Lösung kann ich die CSS-Klasse in einem Beobachter hinzufügen, ohne dass eine zusätzliche Eigenschaft benötigt wird. – Meisenmann

+0

In Ihrem Beispielcode haben Sie eine Klasse zu drei Elementen hinzugefügt. Wenn Sie nur ein Flag benötigen, um alle diese Baumelemente auszublenden, würde ich Ihnen die Polymereigenschaftenflagge empfehlen - Sie können es einfach steuern (besser als Klassen) – Kejt

+0

leider brauche ich eine unterschiedliche Flagge für jede Komponente. Warum hat die versteckte Klasse keine Auswirkung auf das Element? – Meisenmann

Verwandte Themen