0
votes

Différent événement @Click sur composant - Vuejs

Mon projet commence avec Vuejs et Buefy.

Le composant a deux actions différentes clic: p>

  • cliquez sur la zone cyan forte> -> Redirection à une autre page (action 1) forte> li>
  • cliquez sur la zone magenta ​​forte> -> Afficher la liste déroulante (action 2) strong> li> li> ul>

     Entrez la description de l'image ici p>

    mais quand je clique sur action 2 forte>, toujours action 1 forte > Travaux. P>

    voici mon composant: p> xxx pré>

    et à l'intérieur de mon composant, j'ai une liste déroulante (Utilisation du composant Buefy): P>

    <p>{{ data.projects }}</p>
    <BDropdown aria-role="list">
      <BButton
        slot="trigger"
        class="button"
        type="is-text"
        @click.prevent="actionTwo()"
      >
        <BIcon icon="dots-horizontal" />
      </BButton>
      <BDropdownItem aria-role="listitem">Update</BDropdownItem>
      <BDropdownItem aria-role="listitem">Archive</BDropdownItem>
    </BDropdown>
    
    • stop code> li>
    • empêche code> li> ul> p>


5 commentaires

Avez-vous essayé @ click.stop = "actiontwo ()" ?


Oui j'essaie avec @ click.stop pour action 2 mais cet événement ne déclenche pas la liste déroulante


Voulez-vous appeler votre méthode lorsque le menu déroulant est ouvert?


Lorsque je clique sur Dropdown, actiontwo () doit ouvrir le menu. Cependant, seul le premier @Click exécutoire. Donc je me sens comme si je ne peux pas mettre un deuxième événement à l'intérieur mon composant


Avez-vous essayé @ click.elf = "actiontwo ()"?


3 Réponses :


0
votes

Cela se produit probablement à cause de l'événement bouillonnant. Lorsque vous cliquez sur l'élément déroulant, les bulles d'événement Cliquez sur la zone Cyan. Ce que vous devez faire est d'annuler le bouillonnement d'événement pour l'élément déroulant.

<BDropdown aria-role="list">
  <BButton
    slot="trigger"
    class="button"
    type="is-text"
    @click="actionTwo($event)"
  >
    <BIcon icon="dots-horizontal" />
  </BButton>
  <BDropdownItem aria-role="listitem">Update</BDropdownItem>
  <BDropdownItem aria-role="listitem">Archive</BDropdownItem>
</BDropdown>

<script>
export default {
    methods: {
        actionTwo(e) {
            e.cancelBubble = true
        }
    }
}
</script>


1 commentaires

Merci, je vérifie une bouilloire d'événement et je trouve une solution



0
votes

Vous pouvez utiliser le modificateur auto . xxx

Comme la documentation indique:

seul gestionnaire de déclencheur si event.target est l'élément lui-même
i.e. pas d'un élément enfant
( source )


1 commentaires

J'essaie d'appuyer auto mais seulement actiontwo () fonctionne



0
votes

J'ai trouvé la solution. Le problème est venu à un événement spécifique à partir du composant déroulant (Buefy). Donc j'ai ajouté STOP code> modificateur à déclencheur de déclencheur de déclencheur et j'ai ajouté Empêcher code> dans mon composant.

ici la solution: p>

<BDropdown aria-role="list" @click.native.stop>
  <BButton
    slot="trigger"
    class="button"
    type="is-text"
  >
    <BIcon icon="dots-horizontal" />
  </BButton>
  <BDropdownItem aria-role="listitem">Update</BDropdownItem>
  <BDropdownItem aria-role="listitem">Archive</BDropdownItem>
</BDropdown>



0 commentaires