有必要在单击按钮时打开文件上传窗口并带有一定的接受。在我的示例中,在下载窗口打开后应用接受。Element-ui 库 https://element.eleme.io/#/en-US/component/upload
new Vue({
el: '#app',
data: function() {
return {
visible: false,
accept: ''
};
},
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
<div id="app">
<el-upload class="upload-demo" :accept="accept" action="/">
<el-button size="small" @click.native="accept = '.txt'">Upload txt</el-button>
<el-button size="small" @click.native="accept = '.png'">Upload png</el-button>
</el-upload>
</div>
1通过单击元素打开文件选择窗口
el-upload。你可以看到 - 按钮之间有一个距离,它也是可点击的。2您直接更改属性:
accept = '.txt'。粗略地说,更改会进入 DOM 更新队列,直到当前事件完成。那些。在打开文件选择窗口时,DOM 尚未更新。这正是人们可以申请的情况
this.$nextTick。但是下面的示例使用了计算属性。这不能被视为答案,但是作为评论它太长了。
如果您跟踪元素的渲染时间,则似乎每次都在运行组件的预生成副本。那些。组件的第一次渲染不会发生在按钮上,而是发生在第一次执行代码时,并且按钮会开始下一代组件,但会渲染上一个。如果假设这是组件的正确行为,那么我将假设为了能够通过一个按钮同时打开多个上传器。如果不应该同时打开,那么也许这是一个错误?
如果你能找到答案,那将是非常有趣的。