私はポリマーv1.9.1を使用し、Chromeでテストしています。カスタムプロパティへの動的更新
<paper-input>
を含むカスタム要素があり、そのテキストの色を他のプロパティに依存したいと考えています。この色は、カスタムプロパティ--paper-input-container-input-color
または--primary-text-color
によってdeterminedあるので、私はそれらのためのクラスに依存した値に設定します。テキストは私が推測する、常に赤です
#input { --primary-text-color: red; }
#input.green { --primary-text-color: green; }
<paper-input id='input' class$='[[_getClasses(checked)]]'></paper-input>
_getClasses: function(checked) { return checked ? '':'green'; }
をシムのthis limitationのため(これは私のブラウザが使用しているはずです)。だから私はupdateStyles
の呼び出しを追加:
_getClasses: function(checked) {
this.async(function() {
this.$.input.updateStyles();
});
return checked ? '':'green'; }
}
今ではchecked
最初の変更、した後、正常に動作しますが、初期状態がchecked
が最初に偽である場合(すなわち、それは最初は赤間違っているされているが、グリーンになります)。私は別のasync(updateStyles())
をready
に追加しようとしましたが、運がありません(まだjavascriptコンソールからinput.updateStyles()を呼び出すと、それ自体が修正されます)。これを回避するにはどうしたらいいですか?
コンプリート例:http://embed.plnkr.co/VC1ZMw9iyUO3K2SQq5Oy/
btw私はupdateStylesを_getClassesに保存しない限り(ブラウザに依存します:/)しかし、両方の_getClassesからの呼び出しとそれが期待通りに動作するので、ありがとう! – stewbasic
ああそう!これはおそらく、チェックボックスをオンまたはオフにして変更するときに、 'updateStyles'をもう一度起動する必要があるからでしょう。 – a1626
この手伝いhttps://stackoverflow.com/questions/44566067/data-binding-between-parent-child-in-polymer1-0/44568308#44568308 –