i have this input with onchange
event handler
<input accept="image/*" type='file' id="imgInp" @change="imageChange" />
my imageChange
method is like
methods : { imageChange(e ){ const file = e.target.files[0]; console.log(file); URL.createObjectURL(file); this.model.image = URL.createObjectURL(file); } , }
basically setting model.image
value on change now i want to have multiple images on my model … so i want to change the image property to array and have an input for each image
<div v-for="(image , index) in model.images" v-bind:key="index"> <input accept="image/*" type='file' id="imgInp" @change="imageChange" /> </div>
now i need to send the imaeg index in the array to my function as well so i can replace that index image like
and change my method to
imageChange(e , index ){ console.log(`event ->`); console.log(e); console.log(`index ->`); console.log(index); //URL... this.model.images[index] = URL.createObjectURL(file); }
but this will result in undefined event here is the output
event -> undefined index -> 0
how can i send extra argument to event handler without losing event argument ?
Advertisement
Answer
Just execute the function inside with @change
event, and pass the Vue provided $event
params first then index
param.
<div v-for="(image , index) in model.images" v-bind:key="index"> <input accept="image/*" type='file' id="imgInp" @change="imageChange($event, index)" /> </div>