2017-01-23 2 views
0

Я пытаюсь скрыть несколько полимерных элементов в определенном состоянии элемента. Я знаю, что есть несколько возможностей. В моем opinon самый простой способ сделать это, чтобы ввести новый класс CSSСкрыть полимерный элемент

.invisible { 
    display: none; 
} 

и добавить его в список класса полимерных элементов

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

Но это не имеет никакого влияния на элементы. Элементы все еще видны. Взгляд в elment инспектор показывает, что был добавлен класс:

class="style-scope parent-elem invisible" 

Где родитель-элем это имя родительского элемента.

Может ли кто-нибудь объяснить мне, почему элемент не будет скрыт?

Спасибо

С наилучшими пожеланиями, Meisenmann

+0

Привет, иногда, в зависимости от того, как элементы выполнены и взаимодействуют с друг друга, это может быть потому, что новый класс скрыт в теневом доме или в светлом домине. У меня была аналогичная проблема с какой-то внешней lib и использование 'Polymer.dom.flush()' после добавления класса. – Arfost

ответ

2

вы можете Исли манипулировать на ваших элементов с родителем property. Попробуйте в своем элементе properties добавить property

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

затем в вашем method управлять этим property и html компонент установлен

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

пс. если это не будет работать вы можете добавить в parent css

[hidden] { 
    display: none; 
} 

иногда полимерные элементы нуждаются в специальных Примеси, чтобы настроить их CSS, но скрытый, как правило, работает :)

+0

Благодарю вас за ваш anser. Я скрываю элементы, если длина текста некоторых свойств хоста elment <0. Поэтому мне нужно создать дополнительный флаг для каждого свойства text. В вышеприведенном решении я могу добавить класс CSS в наблюдателя без необходимости дополнительного свойства. – Meisenmann

+0

В вашем примере кода, который вы написали, добавив класс к трем элементам, если вам нужен только один флаг, чтобы скрыть все эти элементы дерева, я бы рекомендовал вам использовать флаг свойства Polymer - вы можете легко управлять им (лучше, чем классы) – Kejt

+0

, к сожалению, мне нужно другой флаг для каждого компонента. почему скрытый класс не влияет на элемент? – Meisenmann