如何使用聚合中的Javascript设置的“点击”行为
我正在尝试使用Poylmer 2.x中的一个函数动态地向tho DOM添加一个纸按钮 我希望这个新按钮在点击时调用另一个函数如何使用聚合中的Javascript设置的“点击”行为,javascript,polymer,appendchild,Javascript,Polymer,Appendchild,我正在尝试使用Poylmer 2.x中的一个函数动态地向tho DOM添加一个纸按钮 我希望这个新按钮在点击时调用另一个函数 appendNodeToDom() { let prop = this.result[i]['someProperty']; let node = document.createElement("paper-button"); let button = document.createTextNode(prop); button.ontap = this.
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设置点击行为?问题是您正在调用paper按钮内的文本节点,并在该节点上设置事件侦听器,该节点作为文本节点,除了一些事件之外不会触发事件 另外,您正在将this.go作为回调传递给addEventListener。这意味着执行This.go,然后返回值作为回调传递,在本例中未定义,因为在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重复呈现按钮,并且对基础数组属性进行更改。是的,这是一种特殊情况,其中DOM根据此结果的长度进行不同的渲染。@Matthew如果您认为此答案有帮助,请接受它。