2016-02-13 23 views
1

下載聚合物入門套件後,我在index.html中包含一個dom-if模板(嵌套)dom-bind模板,以便在用戶不在時隱藏整個UI認證。但是,我無法使用應用程序。$$('#id')功能得到DOM。無法通過dom中的id找到節點 - 如果模板爲

我試圖訪問paperDrawerPanel在app.closeDrawer funcion(app.js)

app.closeDrawer = function() { 
    console.log(app.$$('#paperDrawerPanel')); //returns null 
}; 

我如何訪問元素?

編輯1

這是HTML的一部分:

... 
<body unresolved> 
    <span id="browser-sync-binding"></span> 
    <template is="dom-bind" id="app"> 

     <auth-login id="auth" user="{{user}}" is-authenticated="{{isAuthenticated}}"" location="https://i2bserver.firebaseio.com"></auth-login> 

     <template is="dom-if" if="{{isAuthenticated}}"> 
      <paper-drawer-panel id="paperDrawerPanel" drawer-width="220px" responsive-width="1100px"> 
... 

編輯2

我在app.closeDrawer由routing.html稱爲瞬間猜DOM - 如果元素應該已經被篡改。

這裏是調用app.closeDrawer(routing.html從PSK)的代碼:

function closeDrawer(ctx, next) { 
    app.closeDrawer(); 
    next(); 
} 

// Routes 
page('*', scrollToTop, closeDrawer, function(ctx, next) { 
    next(); 
}); 
+0

他們顯示?你不能查詢不存在的元素,如果'dom-if'表達式是錯誤的,這些元素不存在。如果你需要隱藏而不是dom-if。 –

+0

是的,他們顯示(如果條件爲真,當試圖訪問元素) – Oswaldo

+0

請添加更多的代碼和html –

回答

1

element.$$element的DOM範圍內查詢您的代碼

app.closeDrawer = function() { 
    console.log(app.$$('paperDrawerPanel')); //returns null 
}; 

應該工作。在你的情況下,app是一個模板,其作用是將DOM戳到封閉範圍(body)。

嘗試document.querySelector('#paperDrawerPanel')

+0

它的工作,非常感謝! – Oswaldo

1

從文檔:

對於定位在元素的本地DOM動態創建的節點,使用$$方法:

this.$$(selector)

$$回報本地DOM中與selector匹配的第一個節點。

這意味着你必須添加一個#符號來引用元素使用其id。如果這樣寫的

app.closeDrawer = function() { 
    console.log(app.$$('#paperDrawerPanel')); 
}; 
+0

非常抱歉,但我已經在選擇器中使用#,只是忘了把這個例子。還是行不通。我會編輯 – Oswaldo