【发布时间】:2017-11-03 19:35:59
【问题描述】:
我有一个 div 和一个文件输入框。当我们点击 div 时,会触发文件输入的点击。如何在 vue.js 中做到这一点?
【问题讨论】:
-
你可以用html元素标签来做
标签: javascript vue.js
我有一个 div 和一个文件输入框。当我们点击 div 时,会触发文件输入的点击。如何在 vue.js 中做到这一点?
【问题讨论】:
标签: javascript vue.js
您必须访问 DOM 才能触发输入的点击事件。
但是 Vue 可以通过 ref/$refs feature 使其非常方便
使用它,您可以在模板中“标记”一个元素,并在组件代码中方便地访问它,而无需依赖选择器。
new Vue({
el: '#app',
methods: {
clickHandler() {
this.$refs.fileInput.click()
}
}
})
.button {
padding: 10px;
border-radius: 5px;
border: 1px solid #CCC;
display: inline-block;
}
<script src="https://unpkg.com/vue@2.3/dist/vue.js"></script>
<div id="app">
<div class="button" @click="clickHandler">Click me!</div>
<input type="file" ref="fileInput">
</div>
【讨论】:
为您的输入添加一个ref 并为您的包装器添加一个点击侦听器div
<div @click="triggerFileInput" id="wrapper">
<input type="file" ref="myFile">
</div>
methods:{
triggerFileInput(){
this.$refs.myFile.click();
}
}
【讨论】: