2016-02-13 2 views
1

После загрузки Polymer Starter Kit я включил шаблон dom-if внутри (вложенный) шаблон dom-bind в index.html, чтобы скрыть весь пользовательский интерфейс, когда пользователь не проверку подлинности. Однако я не могу получить элементы dom-if, используя функцию app $$ ('# id').Не удается найти узел по id в dom-if template

Я пытаюсь получить доступ к paperDrawerPanel в app.closeDrawer несильно (app.js)

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

Как я могу получить доступ к этому элементу?

Edit 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"> 
... 

Edit 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.$$ запросов внутри DOM сферы element. В вашем случае app является шаблоном, задачей которого является печать DOM в охватывающей области (body).

Попробуйте document.querySelector('#paperDrawerPanel').

+0

Это сработало, спасибо большое! – Oswaldo

1

Из документов:

Для поиска динамически создаваемые узлы в локальном DOM вашего элемента, использовать метод $$:

this.$$(selector)

$$ возвращается первый узел в локальной DOM, который соответствует selector.

Это значит, что вам нужно добавить символ #, чтобы ссылаться на элемент, используя его id. Ваш код

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

должен работать, если написано, как этого

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

очень жаль, но я уже использовал # в селекторе, просто забыл поставить в этом примере. все еще не работает. Я отредактирую – Oswaldo

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

  • Нет связанных вопросов^_^