Es stimmt, dass ein JavaScript-Hash kann entweder Punkt zugegriffen werden .
oder Array []
Notation. Wenn Sie einen Literalnamen haben, können Sie die Punktnotation this.$.some_id
verwenden. Wenn Sie eine Indirektion haben, wie this.id = 'some_id'
, können Sie die Array-Notation this.$[this.id]
verwenden, um den gleichen Wert zu finden.
Der schwierige Teil ist, dass Polymer nur $
Array nach dem ersten Stempeln der Vorlage bevölkert, was vor ready
passiert. Wenn Sie eine externe Bindung an this.id
hätten, würde this.$.[this.id]
funktionieren, aber da Sie this.id
in ready
festlegen, ist es zu spät für die $
Bequemlichkeit.
In diesem Fall können Sie stattdessen Ihre shadowRoot direkt abfragen:
this.shadowRoot.querySelector('#' + this.id)
Pro Tipp: eine Unterklasse an einem gewissen Punkt kann eine neue Vorlage liefern, wobei in diesem Fall this.shadowRoot
auf den neuen Schatten- Punkt Root und nicht die Superklasse Version. Aus diesem Grund ist es am besten, ein benanntes Div zu installieren, das Sie abfragen können, z. this.$.id_div.querySelector('#' + this.id')
.
+1 für den Profi-Tipp! – CletusW
Vielleicht hat Polymer etwas in ihren Updates geändert, aber das. $. [This.id] funktioniert nicht für mich.Die Antwort unten funktioniert allerdings gut. $ [Id] – Niklas