升级到 Polymer 2.0 时,我应该用什么来替换 Polymer.Element 中的 queryEffectiveChildren()
When upgrading to Polymer 2.0, what should I use to replace queryEffectiveChildren() in a Polymer.Element
我有一个 Polymer 1 元素,它使用 queryEffectiveChildren() 检查插槽的 DOM 是否已填充:
if(this.queryEffectiveChildren('[slot="description"]').childElementCount > 0) {
Polymer 2.0 中没有 queryEffectiveChildren 函数 Polymer.Element,那么我应该使用什么来执行上述检查?
您可以使用 Polymer.LegacyElementMixin
to use queryEffectiveChildren
(或其他遗留 API):
customElements.define('x-foo', class extends Polymer.LegacyElementMixin(Polymer.Element) {
connectedCallback() {
super.connectedCallback();
let x = this.queryEffectiveChildren('[slot="description"]');
// ...
}
});
或等效项,如 2.0 upgrade guide 中所述:
customElements.define('x-foo', class extends Polymer.LegacyElementMixin(Polymer.Element) {
connectedCallback() {
super.connectedCallback();
let x = Polymer.FlattenedNodesObserver
.getFlattenedNodes(this)
.filter(n => n.nodeType === Node.ELEMENT_NODE)
.filter(n => n.parentNode.querySelector('[slot="description"]') === n);
// OR: .filter(n => n.getAttribute('slot') === 'description');
}
});
我有一个 Polymer 1 元素,它使用 queryEffectiveChildren() 检查插槽的 DOM 是否已填充:
if(this.queryEffectiveChildren('[slot="description"]').childElementCount > 0) {
Polymer 2.0 中没有 queryEffectiveChildren 函数 Polymer.Element,那么我应该使用什么来执行上述检查?
您可以使用 Polymer.LegacyElementMixin
to use queryEffectiveChildren
(或其他遗留 API):
customElements.define('x-foo', class extends Polymer.LegacyElementMixin(Polymer.Element) {
connectedCallback() {
super.connectedCallback();
let x = this.queryEffectiveChildren('[slot="description"]');
// ...
}
});
或等效项,如 2.0 upgrade guide 中所述:
customElements.define('x-foo', class extends Polymer.LegacyElementMixin(Polymer.Element) {
connectedCallback() {
super.connectedCallback();
let x = Polymer.FlattenedNodesObserver
.getFlattenedNodes(this)
.filter(n => n.nodeType === Node.ELEMENT_NODE)
.filter(n => n.parentNode.querySelector('[slot="description"]') === n);
// OR: .filter(n => n.getAttribute('slot') === 'description');
}
});