Passing event and argument to v-on in Vue.js

前端 未结 3 1363
青春惊慌失措
青春惊慌失措 2020-12-04 09:37

I pass a parameter in v-on:input directives. If I don\'t pass it, I can access the event in the method. Is there any way I can still access the event when passi

相关标签:
3条回答
  • If you want to access event object as well as data passed, you have to pass event and ticket.id both as parameters, like following:

    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)
      }
    }
    

    See working fiddle: https://jsfiddle.net/nee5nszL/

    Edited: case with vue-router

    In case you are using vue-router, you may have to use $event in your v-on:input method like following:

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

    Here is working fiddle.

    0 讨论(0)
  • 2020-12-04 10:25

    Depending on what arguments you need to pass, especially for custom event handlers, you can do something like this:

    <div @customEvent='(arg1) => myCallback(arg1, arg2)'>Hello!</div>

    0 讨论(0)
  • 2020-12-04 10:30

    You can also do something like this...

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

    Evan You himself recommended this technique in one post on Vue forum. In general some events may emit more than one argument. Also as documentation states internal variable $event is meant for passing original DOM event.

    0 讨论(0)
提交回复
热议问题