2014-11-18 1 views
2

Я пытаюсь ограничить querySelector элементами с теневым dom, созданным шаблоном, с основной линией моей веб-страницы. Вот фрагмент из того, что я хочу сделать:полимерный ограничивающий запросSlector to shadow dom с встроенным шаблоном

<template id="userForm" is="auto-binding"> 
     <div id=contents> 
      <my-element id='myElement> 
     </div> 
</template> 
<script> 
var userForm = document.querySelector('#userForm'); 

Теперь я хотел бы иметь возможность сделать что-то вроде:

var myElement = userForm.querySelector('#myElement'); 

или

var myElement = userForm.$.contents.querySelector('#myElement'); 

Но ни одна из этих работ. Если шаблон содержатся в пользовательском элементе я мог бы использовать:

this.$.contents.querySelector('#myElement); 

Все это в помощь убедившись, что я не; выбрать элемент с тем же идентификатором вне шаблона.

Кто-нибудь знает, как это осуществить?

ответ

1

Я могу ошибаться, но я думаю, что все, что вам нужно сделать, это

yourElement.shadowRoot.querySelector("#yourId"); 
+0

Спасибо за предложение Дэвида. Я попробовал, но, используя мой пример выше, userForm.shadowRoot является неопределенным значением. –

+0

@WillHopkins Когда вы используете 'console.dir' для регистрации вашего элемента, вы видите там свойство shadowRoot? Или, если на то пошло, вы используете полипол или изначально? –

+0

Ой, подождите секунду, вы пытаетесь получить shadowRoot элемента шаблона, это не сработает, вероятно, нет, потому что у шаблона нет тени DOM, я уверен, что ... просто взгляните на хром инспектора и посмотреть, где элемент на самом деле. И свойство '.shadowRoot' доставит вас в любые тени, которые вы найдете. –

Смежные вопросы