2014-04-15 192 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'](這是一個快捷方式)來獲取你正在查詢的元素。