2014-09-17 1 views
2

Я искал это, и все ответы использовали Дарт, с которым у меня нет опыта.Не удается получить доступ к элементам в вложенном шаблоне/повторяющемся шаблоне?

Есть ли способ сделать это с помощью обычного ol 'JS?

this.$.classname только возврат null.

редактировать: вот пример того, что я пытаюсь сделать

<template repeat="{{item, i in items}}"> 
    <div id="accordheader" on-click="{{toggle}}">{{item}}</div> 
    <core-collapse id="collapse"> 
     <p>asdf</p> 
    </core-collapse> 
</template> 

и сценарий:

toggle: function() { 
    this.$.collapse.toggle(); 
    console.log('toggled'); 
} 

Я пытаюсь сделать гармошку на основе ядра коллапса, и в то время как this.$.collapse.toggle(); console.log работает, когда он не в template с repeat в качестве атрибута, он не работает, если он находится в template с repeat в качестве атрибут. Я пробовал и this.$.collapse.toggle();, и this.shadowRoot.querySelectorAll('#collapse'); и ни один не нашел его в повторном шаблоне.

ответ

4

$ не позволяет получить доступ к элементам в пределах template if= или template repeat=. Вместо этого используйте shadowRoot.querySelector('someselector'). (не уверен, как синтаксис в JavaScript точно, я использую его только в Dart).

+0

Первое, что я пробовал, был shadowRoot.querySelector; no dice :( – shanling

+0

Я пропустил то, что вы использовали $ .'classname'. '$' также может использоваться только для доступа к элементам по id, а не по имени класса или любому другому селектору. 'querySelector' работает всегда, когда ваш элемент существует. Мне нужно больше информацию о том, почему 'querySelector' может не работать в вашей ситуации. Либо элемент не существует, либо селектор ошибочен. –

+0

Я отредактировал свой вопрос на примере того, что я пытаюсь сделать. Спасибо за ответ :-) – shanling