當我嘗試從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