2017-01-23 6 views
0

私はいくつかの要素条件でいくつかのポリマー要素を隠そうとします。私はいくつかの可能性があることを認識しています。私のopinonでこれを行う最も簡単な方法は、ポリマー要素を隠す

.invisible { 
    display: none; 
} 

新しいCSSクラスを導入し、ポリマー要素

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

のクラスリストに追加することです。しかし、これは要素に影響を与えません。要素は引き続き表示されます。 elentのインスペクタを見ると、クラスが追加されたことが示されます。

ここで、parent-elemは親要素の名前です。

誰も私の要素がなぜ隠されないのか説明できますか?

はあなたに

よろしく、あなたはイースリー親propertyであなたの要素に操作することができ Meisenmann

+0

こんにちは、時には、あなたの要素が実装と相互作用しているかに応じて、お互いに、それは新しいクラスが影のdomまたはlight domに隠されているからです。私は、いくつかの外部libとそれを解決したクラスを追加した後に 'Polymer.dom.flush()'を使用して同様の問題を抱えていました。 – Arfost

答えて

2

ありがとうございます。 propertiesがあなたのmethodこのpropertyを操作し、htmlコンポーネントに

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

PSを設定するには、その後property

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

を追加するには、要素に試してみてください。これは文句を言わないparent css

[hidden] { 
    display: none; 
} 

は時々ポリマー要素が自分のCSSをカスタマイズするために、特別なミックスインを必要として追加することができます動作しますが、隠されている場合、通常は動作します:)

+0

アンサーに感謝します。ホストのいくつかのプロパティのテキストの長さがelment <0なら要素を隠すので、各テキストプロパティに対して追加のフラグを作成する必要があります。上記のソリューションでは、余分なプロパティを必要とせずにオブザーバーにCSSクラスを追加できます。 – Meisenmann

+0

あなたのサンプルコードでは、3つの要素にクラスを追加して記述しました。もしそれらのツリー要素をすべて隠すフラグが1つだけあれば、Polymerプロパティフラグを使用することをお勧めします - それはeaslyで(クラスよりも)制御することができます – Kejt

+0

残念ながら、各コンポーネントごとに異なるフラグ。なぜ隠されたクラスは要素に影響を与えませんか? – Meisenmann