Dart 自定义元素无法访问它';阴影根目录中的内容
我试图在另一个自定义元素阴影根中访问自定义元素的内容Dart 自定义元素无法访问它';阴影根目录中的内容,dart,dart-polymer,Dart,Dart Polymer,我试图在另一个自定义元素阴影根中访问自定义元素的内容 index.html只有一个my tag wrapper元素: ... ... my_tag\u wrapper.html包含带有段落元素的my tag元素: 包装我的标签内容 my_tag.html只需呈现它的内容: my_tag.dart将其内容打印到控制台: @CustomTag('my-tag')) 类MyTagElement扩展了聚合关系{ ParagraphElement get p=>this.querySelect
index.html
只有一个my tag wrapper
元素:
...
...
my_tag\u wrapper.html
包含带有段落元素的my tag
元素:
包装我的标签内容
my_tag.html
只需呈现它的内容:
my_tag.dart
将其内容打印到控制台:
@CustomTag('my-tag'))
类MyTagElement扩展了聚合关系{
ParagraphElement get p=>this.querySelector('p');
MyTagElement.created():super.created(){
var-pe=p;
var t=(pe==null)?null:pe.text;
打印('my-tagp:${t}');
打印('my-tagouterhtml:${outerHtml}');
}
}
但是,my_tag.dart
print:
mytagp:null
我的标签outerHtml:
我可以在上述代码中获取我的标签内容吗
这是
编辑:
我根据作者提供的线索理解了这个问题
在另一个shadowRoot中,无法在created()
构造函数上访问自定义元素的内容。可在附件()
上和之后访问内容
我修复了我的标签。省道:
@CustomTag('my-tag'))
类MyTagElement扩展了聚合关系{
ParagraphElement get p=>this.querySelector('p');
MyTagElement.created():super.created(){
_printContent();//由于未呈现内容,因此打印为null
}
@凌驾
附({
super.attached();
_printContent();//打印内容
}
_printContent(){
var-pe=p;
var t=(pe==null)?null:pe.text;
打印('my-tagp:${t}');
打印('my-tagouterhtml:${outerHtml}');
}
}
我有一个误解,即自定义元素的内容总是可以在created()
构造函数上访问,因为mytag
的内容可以在created()
上访问,而它是body
元素中的子元素
编辑:
s/domReady/attached
by因为my tag
作为content
节点p
成为my tag wrapper.shadowRoot的子节点
您可以使用
(shadowRoot.querySelector('content')作为ContentElement.getDistributedNodes()[0];
我发现我的标签
可以访问它的内容,而无需shadowRoot
。然而,通过这个答案,我注意到这些内容并没有呈现在created()
构造函数上。谢谢你的回答。是的,我想你是对的<代码>此。查询选择器应该可以。在创建的
构造函数中,除了初始化某些类字段外,几乎没有任何内容被呈现。当前,当您想要访问DOM时,最好的选择是attached
,但仅在super.attached()之后代码>调用。我确认invakingattached()
早于domReady()
。所以,我修正了我的解决方案。再次感谢。