【发布时间】:2013-09-08 16:55:22
【问题描述】:
我在访问 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 总是返回 3,计算我硬编码到 <template> 中的 3 个 <div>s。使用shadowRoot 不会发现在<template repeat="{{chars}}"> 代码中创建的任何div。任何想法为什么会出现这种情况?
此外,当我将样式应用于 char 类的元素时,样式将应用于所有 <div>s,包括在repeat 中创建的样式。但是使用shadowRoot 只会返回硬编码的div。
【问题讨论】: