2014-04-15 153 views
9

我试图通过querySelector访问我的组件的一部分,但它返回null。Can not querySelector in our Polymer component

我在我的组件的HTML看起来像:

<nav class="mainmenu"> 
    <div class="container"> 
     <div class="dropdown" id="my-dropdown"> 

我要访问此究其原因,是因为我想改变的地方班某些码条件的用户点击,当身体。

void ready(){ 
document.body.onClick.listen((E) { 
    if(_isActive){ 
    querySelector("#my-dropdown"); 

querySelector总是retun null。为什么?

我知道影子dom原谅我访问其他DOM组件,但为什么在同一个组件? 我如何访问它?或者,也许我应该处理不同?

+2

试试shadowRoot.querySelector('#my-dropdown')。这意味着querySelector将选择元素的阴影部分中的元素,而不是公共可见的dom,这是this.querySelector()所做的。 –

+0

您也可以使用这种写法在PolymerElement中通过ID进行选择: var dropdown = $ ['my-dropdown']; –

回答

16

当您使用querySelector("#my-dropdown")时,您正在使用顶级功能querySelector。该功能在主文档中进行搜索,而不是在聚合物元素的ShadowDOM中进行搜索。

在你的情况下,你应该使用shadowRoot.querySelector('#my-dropdown')$['my-dropdown'](这是一个快捷方式)来获取你正在查询的元素。