Question Passer un événement et un argument à v-on dans Vue.js


Je passe un paramètre dans v-on:input directives. Si je ne le passe pas, je peux accéder à l'événement dans la méthode. Est-ce que je peux toujours accéder à l'événement lors du passage du paramètre à la fonction? Non pas que j'utilise vue-router:

C'est sans passer le paramètre. Je peux accéder à l'objet événement

HTML

<input type="number" v-on:input="addToCart" min="0" placeholder="0">

Javascript

  methods: {
    addToCart: function (event) {

      // I need to access the element by using event.target
      console.log('In addToCart')
      console.log(event.target)
    }
  }

C'est lors du passage du paramètre. Je ne peux pas accéder à l'objet événement

HTML

<input type="number" v-on:input="addToCart(ticket.id)" min="0" placeholder="0">

Javascript

  methods: {
    addToCart: function (id) {

      // How can I access the element by using event
      console.log('In addToCart')
      console.log(id)
    }
  }

Voici un extrait du code, qui devrait suffire à reproduire le problème que je rencontre

https://jsfiddle.net/lookman/vdhwkrmq/


34
2017-12-04 08:07


origine


Réponses:


Si vous voulez accéder à un objet d'événement aussi bien que des données transmises, vous devez passer event et ticket.id les deux comme paramètres, comme suit:

HTML

<input type="number" v-on:input="addToCart($event, ticket.id)" min="0" placeholder="0">

Javascript

methods: {
  addToCart: function (event, id) {
    // use event here as well as id
    console.log('In addToCart')
    console.log(id)
  }
}

Voir le violon de travail: https://jsfiddle.net/nee5nszL/

Edité: cas avec vue-routeur

Si vous utilisez la vue-routeur, vous devrez peut-être utiliser $ event  dans ton v-on:input méthode comme suit:

<input type="number" v-on:input="addToCart($event, num)" min="0" placeholder="0">

Ici travaille violon.


70
2017-12-04 08:36



Vous pouvez aussi faire quelque chose comme ça ...

<input @input="myHandler('foo', 'bar', ...arguments)">

Evan You lui-même a recommandé cette technique dans un post sur le forum Vue. En général, certains événements peuvent émettre plus d'un argument. Aussi comme états de la documentation La variable interne $ event est destinée à passer un événement DOM original.


1
2018-05-15 15:44