如果不是从单击事件内部触发,它将不起作用。
您可以在子组件中创建一个方法,该方法可以从事件侦听器回调中的父组件调用。
const compo = Vue.component("compo", {
template: '<input type="file" ref="input" hidden>',
mounted() {
this.$refs.input.addEventListener('click', e => {
console.log('clicked: ', e.target)
})
},
methods: {
open() {
this.$refs.input.click()
}
}
})
new Vue({
el: '#app',
components: {
compo
},
data() {
return {
propForComponent: false
};
},
methods: {
onClick() {
this.$refs.compo.open()
}
}
})
<compo ref="compo"></compo>
<button @click="onClick">Choose file</button>
查看此更新笔:
https://codepen.io/WisdomSky/pen/GBYyGL?editors=1010