【发布时间】:2016-11-13 11:04:00
【问题描述】:
我正在开发一个应用程序,它使用自定义元素 API(使用 webcomponents.js 作为 polyfill)。在我的元素内部,我想将所有内容封装在一个影子根中。聚合物元素的 HTML 模板似乎已正确导入,但是缺少样式 - 与我将元素放在外面时不同,样式似乎可以工作:
class TestWC extends HTMLElement {
createdCallback() {
console.log('created');
var ShadowRoot = this.createShadowRoot();
ShadowRoot.innerHTML = '<paper-input label="Inside shadow root"></paper-input>';
}
}
var MyTestWC = document.registerElement('test-test', TestWC);
var MyTestWCInst = new MyTestWC();
document.querySelector('#placeholder').appendChild(MyTestWCInst);
<script src="https://cdnjs.cloudflare.com/ajax/libs/webcomponentsjs/0.7.22/webcomponents.js"></script>
<paper-input label="Outside shadow root"></paper-input>
<p id="placeholder"></p>
<link rel="import" href="https://polygit.org/components/paper-input/paper-input.html" />
问题:为什么聚合物 web 组件的原始样式在 shadow root 中不起作用?
编辑:这是一个 Plunker;仅适用于 chrome 的 FTM。 http://plnkr.co/edit/rEibVckeUAqqrZljuVEy?p=preview
【问题讨论】:
-
PS:用于可视化聚合物相关问题的首选“plunkr-like”平台是什么? plunkr 似乎没有我使用的聚合物组件,或者至少我没有找到?
-
好的,找到了用于纸张输入的 CDN。添加了一个 plunker。
-
不是我的专业领域,但这可能会有所帮助html5rocks.com/en/tutorials/webcomponents/shadowdom-201
-
你能用
iron-image或iron-icon这样的简单元素试试同样的东西吗?
标签: polymer web-component