【发布时间】:2015-01-02 10:10:50
【问题描述】:
我有一个自定义元素,它由其他 2 个自定义元素扩展
import 'dart:html';
void main() {
document.registerElement('x-c', C);
document.registerElement('x-b', B);
}
class ViewBase extends HtmlElement{
TemplateElement t;
ViewBase.created():super.created(){
t = this.querySelector('template');
var clone = t.content.clone(true);
this.createShadowRoot();
this.shadowRoot.append(clone);
}
}
class B extends ViewBase{
B.created():super.created();
}
class C extends ViewBase{
C.created():super.created();
}
当我尝试执行以下操作时
<x-b>
<template>
<p>this is a paragraph in b shadowroot</p>
<x-c>
<template>
<p>this is a paragraph in c shadowroot</p>
</template>
</x-c>
</template>
</x-b>
当超级构造函数激活 B 元素内的模板时,嵌套的 C 元素构造函数永远不会被调用,知道为什么吗?
我希望在页面上看到的是
this is a paragraph in b shadowroot
this is a paragraph in c shadowroot
我得到的只是
this is a paragraph in b shadowroot
【问题讨论】:
-
我认为您对 的使用和您的克隆内容已损坏。为什么不使用
PolymerElement类? -
@Robert 问题是我发现我上面的代码没有任何问题,你能解释一下它的坏处吗?这当然只是一个简单的例子,我的想法是能够覆盖默认值另一个 html 文件中的模板,如果我想使用聚合物,我不会问;)
标签: dart