首先,我爲標題戈爾道歉。我努力用一句話總結這個問題。如何訪問元素內容中的模板的innerHTML
我有一個聚合物元素。在我的元素中,我希望顯示(或簡單地登錄到控制檯)作爲元素實例(的內容)的子元素的innerHTML。
(請注意,這裏的目的是創建一個類似的鐵演示助手演示 - 摘錄的元素。)
考慮以下聚合物元件:
<link rel="import" href="../../polymer/polymer.html">
<dom-module id="print-contents-html">
<script>
Polymer({
is: 'print-contents-html',
attached: function() {
var template = Polymer.dom(this).queryDistributedElements('template')[0];
console.log(template.innerHTML);
}
});
</script>
</dom-module>
很簡單,我查詢'模板'元素並記錄它的內部HTML。
現在考慮以下用法:
正如預期的那樣,這將導致的 「Hello World」 被記錄到控制檯。 不過,我想使用的「打印內容-HTML」另一種聚合物元素內:
<link rel="import" href="../../polymer/polymer.html">
<link rel="import" href="./print-contents-html.html">
<dom-module id="simple-demo">
<template>
<print-contents-html>
<template>
Hello World from simple demo
</template>
</print-contents-html>
</template>
<script>
Polymer({
is: 'simple-demo',
});
</script>
</dom-module>
現在,如果我更新使用還包括簡單的演示元素的實例:
<!doctype html>
<html>
<head>
<script src="../../webcomponentsjs/webcomponents-lite.js"></script>
<link rel="import" href="./print-contents-html.html">
<link rel="import" href="./simple-demo.html">
</head>
<body>
<print-contents-html>
<template>
Hello World
</template>
</print-contents-html>
<simple-demo></simple-demo>
</body>
</html>
我期望看到記錄到控制檯的「Hello World」和「Hello World from simple demo」。但是,簡單的演示消息不會被記錄。
看起來雖然queryDistributedElements()確實返回模板元素的實例,但innerHTML字段是一個空字符串。
有誰知道這是爲什麼?訪問content/child模板元素沒有設置innerHTML?
其次,有沒有人知道一種替代方法,通過它我可以訪問作爲聚合物元素的內容/子元素的模板元素的innerHTML?
親切的問候, 安德魯·巴特勒