J'ai quelques problèmes en utilisant hyperHTML (peut-être seulement quelques compréhensions-problèmes).hyperHTML: le contenu générique dans une boucle est toujours rendu plein et perd ses liaisons (cliquez sur les événements)
Lorsque j'ai du contenu dynamique dans une boucle, le contenu est entièrement rendu et perd ses liaisons (comme document.body.innerHTML = content
, ce qui n'est pas l'idée de hyperHTML, n'est-ce pas?). S'il vous plaît voir mon exemple ci-dessous:
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>
La première fois button2
est cliqué sur le contenu est rendu. La liaison initiale fonctionne toujours. Une fois le contenu rendu à nouveau, l'écouteur est perdu.
De l'autre côté, le Test Button
n'est pas rendu à nouveau. La liaison est toujours présente. Est-ce que quelqu'un pourrait m'expliquer comment utiliser correctement hypeHTML en itérant sur une liste?
Merci, Matthias
Salut Andrea, vous remercie beaucoup pour vos commentaires et votre excellent exemple à Code Pen. Maintenant, c'est clair :-) –
https://codepen.io/janat08/pen/wpWgbO J'ai essayé de changer le tableau avant chaque mise à jour, il n'en est rien sorti. –