Polymer 要素の shadowDom へのアクセスに問題があります。要素の (切り捨てられた) コードは次のとおりです。
<polymer-element name="word-element" attributes="chars">
<template>
<h2>Drag and drop the letters to form anagrams</h2>
<div id='container'>
<div class="char" draggable="true">a</div>
<div class="char" draggable="true">b</div>
<div class="char" draggable="true">c</div>
<br>
<br>
<template repeat="{{chars}}">
<div class="char" draggable="true">{{}}</div>
</template>
</div>
</template>
</polymer-element>
Dart コードは次のようになります。
@CustomTag("word-element")
class WordElement extends PolymerElement with ObservableMixin {
@observable List chars;
inserted() {
var charDivs = this.shadowRoot.queryAll('.char');
print(charDivs.length);
}
charDivs.length
<div>
にハードコーディングした3 を数えて、常に 3 を返します<template>
。<template repeat="{{chars}}">
コード内で作成された divは、 を使用しても検出されませんshadowRoot
。なぜこれが当てはまるのでしょうか?
また、 class を使用して要素にスタイルを適用すると、 内で作成されたものを含むすべてchar
のにスタイルが適用されます。ただし、使用すると、ハードコードされた div のみが返されます。 <div>
repeat
shadowRoot