Дело в том, что вы вызываете button
текстовый узел внутри paper-button
и устанавливаете прослушиватель событий на этом узле, который - будучи узлом Text
- не запускает события (кроме некоторых исключений ).
Кроме того, вы передаете this.go()
в качестве обратного вызова на addEventListener
.Это означает, что this.go()
выполняется , а затем возвращаемое значение передается как обратный вызов (в данном случае undefined
, потому что после console.log вы ничего не возвращаете).Вместо этого вы должны передать идентификатор функции, не вызывая ее:
addEventListener('tap', this.go);
Все вместе:
appendNodeToDom() {
let prop = this.result[i]['someProperty'];
let button = document.createElement('paper-button');
let text = document.createTextNode(prop);
button.appendChild(text);
button.addEventListener('tap', this.go); // Add the listener to button
this.shadowRoot.getElementById('buttons').appendChild(node);
}
go() {
console.log('go');
}
Просто небольшая заметка: имейте в виду, что у Polymer многоинструментов, чтобы избежать выполнения прямых манипуляций DOM.Если вам просто нужно добавить кнопку в список, вы можете рассмотреть решение, в котором dom-repeat
отображает кнопки, а изменения вносятся в базовое свойство массива.