当我尝试从querySelector外部文件我得到了一个未定义的模板标签中的元素,经过搜索,我发现的唯一解决方案的一点点是“shadowRoot”但是当我试图使用它我得到'shadowRoot没有定义'。找不到里面有querySelector模板元素 - 聚合物
回答
下面的代码工作正常,我(jsbin):
<template is="auto-binding" id="tmpl">
<h1>Hello from {{foo}}</h1>
</template>
<script>
document.addEventListener('polymer-ready', function() {
var tmpl = document.querySelector('#tmpl');
tmpl.foo = 'my thing';
});
</script>
我加入了polymer-ready
事件,因为它通常是一个很好的做法试图玩弄他们之前等待的元素都做好准备。
编辑:OP想知道如何找到一个模板
中的元素要找到一个模板中的元素,你会使用该模板的content
关键字需要querySelector
。这是为了防止意外地在模板中选择内容(例如,如果要在页面上查询选择器全部p
标记,则可能不希望p
标记位于未被模板化的模板内)。
下面是这改变了template
(jsbin)内的h2
为例
<template is="auto-binding" id="tmpl">
<h1>Hello from {{foo}}</h1>
<h2>Another header</h2>
</template>
<script>
document.addEventListener('polymer-ready', function() {
var tmpl = document.querySelector('#tmpl');
tmpl.foo = 'my thing';
var h2 = tmpl.content.querySelector('h2');
h2.textContent = 'hello world';
});
</script>
我的不好,我忘了说它是找到模板标签而不是元素模板内 – InvisibleUn1corn 2014-09-25 10:10:13
好的,我已经更新了我的回答 – robdodson 2014-09-25 14:22:48
感谢上帝,看了这个解决方案的网络! – Whyser 2015-03-06 14:31:40
- 1. 聚合物:正确地去除里面有元素的聚合物元素
- 2. 聚合物动态元素模板
- 3. HTML页面作为聚合物元素的模板
- 4. 聚合物元素似乎不接受模板内的样式
- 5. 聚合物 - 聚合物元素内显示元素
- 6. 聚合物2.0:聚合物1.0杂化元素不适用于聚合物2.0?
- 7. 如何在聚合物页面找到硒元素的网页元素?
- 8. 如何找到元素嵌套模板
- 9. 聚合物:在自定义元素中使用querySelector而不是“this。$”。
- 10. 从AngularJS里面重复Json数据里面的聚合物元素
- 11. 聚合物火母元素
- 12. 缺失聚合物元素
- 13. 递归聚合物元素
- 14. 隐藏聚合物元素
- 15. 渲染聚合物元素
- 16. getElementById聚合物元素
- 17. 允许聚合物元素的消费者提供模板
- 18. 带模板内容的聚合物自定义元素
- 19. 如何在模板聚合物中使用元素函数?
- 20. 聚合物CLI构建失败的元素起动模板
- 21. 将数据传递到聚合物元素而不使用聚合物
- 22. 添加班级到聚合物元素
- 23. 聚合物添加行为到元素
- 24. 聚合物google-maps元素不显示
- 25. 聚合物简单元素不呈现
- 26. 聚合物特性不在元素
- 27. onclick =“animated.open()”不工作聚合物元素
- 28. 聚合物网站不加载元素
- 29. 聚合物:确保一种聚合物元素先于另一种聚合物元素执行
- 30. 如何在另一个聚合物元素内使用聚合物元素
你可以给'querySelectorAll'了一枪。 – 2014-09-24 11:52:13
几十个querySelectors中的哪一个不起作用? – 2014-09-24 12:20:23
我能够使'querySelector'工作,但不是所需的功能。确保你的'模板'也有一个激活的模型。 在一个侧面说明 - 我真的不确定所有这些如何联系在一起。我没有看到一个'polymer-element'声明,所以你可能想创建一个codepen或者jsfiddle来测试这个,所以我们可以以更好的方式提供帮助 – 2014-09-24 13:34:29