J'ai des problèmes pour implémenter un composant modal dynamique dans Vue.Composants modaux multiples avec Vue
Une approche courante Je suis pour afficher un ensemble de données extraites de la base de données est que je vider chacune des lignes dans un élément de tableau HTML en itérant sur chacune des lignes du résultat db. Quelque chose comme ceci:
Comme vous pouvez le voir dans la capture d'écran, chacune des lignes a un ou plusieurs boutons qui sont générés dynamiquement par la boucle. Pour lier un composant modal à chacun des boutons (disons les boutons Supprimer dans ce scénario), je fais quelque chose comme ça.
HTML:
<div id="app">
<?php foreach($result as $x): ?>
<modal v-if="showModal">I am Modal $x</modal>
<btn @trigger="onShowModal">Button $x</btn>
<?php endforeach; ?>
</div>
Donc, si j'ai trois lignes dans mon résultat, le bloc précité du code prendra la forme de quelque chose comme ceci:
<div id="app">
<modal v-if="showModal">I am Modal 1</modal>
<btn @trigger="onShowModal">Button 1</btn>
<modal v-if="showModal">I am Modal 2</modal>
<btn @trigger="onShowModal">Button 2</btn>
<modal v-if="showModal">I am Modal 3</modal>
<btn @trigger="onShowModal">Button 3</btn>
</div>
Et voici ce que je fais à la fin JavaScript:
JavaScript:
Le problème avec cette approche est que lorsque je clique sur l'un des boutons Supprimer, j'obtiens une pile de modaux au lieu du modal que je voulais voir. Et c'est parce que je metsshowModal
à
true
et si vous voyez le bloc HTML rempli, vous verrez que chacun des modaux est défini sur
v-if="showModal"
.
Et comme je commence à comprendre la relation-frontend backend, j'apprends que ce modèle apparaît plus souvent dans une application. Comment résoudre ce problème (avec un niveau très favorable aux débutants)?
Dans le cas d'un 'composante modale button', si je voulait que le nom de la propriété de données et la fonction à exécuter dans '@ trigger' soient fournis par l'utilisateur plutôt que par la fonction et les fonctions statiques' showModal' et 'onShowModal'. Je veux dire quelque chose comme ceci: ' modal-button>'? –
Eisenheim
Dans ce cas, votre gestionnaire '@ trigger' dans le composant' modal-btn' devrait émettre un événement (disons '$ emit ('show')'), alors le composant parent devrait gérer cet événement via '
thanksd
Merci, ça s'occupe de l'émission de l'événement Mais qu'en est-il de la directive 'v-if' dans' '? Comment puis-je lier la valeur de v-if à une propriété data au choix de l'utilisateur? dire, 'showConfirmModal'? Je suis coincé avec' ' –
Eisenheim