[英]How to Set `on-tap` Behavior of </paper-button> with Javascript in Polymer
我正在尝试使用Poylmer 2.x中的功能将paper-button
即时添加到tho DOM。
我希望这个新按钮可以在点击时调用另一个函数。
appendNodeToDom() {
let prop = this.result[i]['someProperty'];
let node = document.createElement("paper-button");
let button = document.createTextNode(prop);
button.ontap = this.go(); // what is the proper syntax for this?
node.appendChild(button);
this.shadowRoot.getElementById('buttons').appendChild(node);
}
go() {
console.log('go');
}
还尝试了:
button.addEventListener("click", this.go());
button.addEventListener("tap", this.go());
如何在Polymer 2.x中使用Javascript设置“轻按”行为?
问题是您将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
呈现按钮并在基础array属性上进行更改的解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.