我在使用 hyperHTML 时遇到了一些问题(也许只是一些理解问题)。
当我在循环中有动态内容时,内容会完全呈现并失去它的绑定(例如document.body.innerHTML = content
,这不是 hyperHTML 的想法,不是吗?)。请看下面我的例子:
function render() {
console.log('render');
hyperHTML.bind(document.body) `start:<br>
${[1,2,3].map(item => `
count <button id="testbutton${item}">button${item}</button><br>
`)}<br>
press button2<br>
<button id="testbutton">Test Button</button><br>
last rendering ${new Date().toTimeString()}`;
}
function init() {
render();
let self = this;
document.querySelector('#testbutton2').addEventListener('click', () => self.render());
document.querySelector('#testbutton').addEventListener('click', () => self.render());
}
window.addEventListener('load', () => init());
<script src="https://webreflection.github.io/hyperHTML/min.js"></script>
第一次button2
点击内容被渲染。初始绑定仍然有效。再次呈现内容后,听众会丢失。
另一方面,Test Button
不会再次渲染。绑定仍然存在。
有人可以向我解释一下,如何通过迭代列表以正确的方式使用 hypeHTML。
谢谢, 马蒂亚斯