我的vue组件是这样的:
<template>
...
<a href="javascript:;" class="thumbs"
:title="upload">
<span class="fa fa-plus fa-2x"></span>
</a>
...
</template>
<script>
export default {
props: ['...'],
data() {
return {
...
};
},
computed:{
...
}
}
</script>
我想要点击一个链接,它可以上传文件
在javascript中,我知道。如果是这样的javascript:How to make a link act as a file input
但我怎么能在vue.js 2中做到这一点?
答案 0 :(得分:2)
我相信存在一个小小的误解:Vue.js 2 仍然是javascript 。它的目标与它的幻想components不同 - 它应该增强JS,而不是用一个不同的结构替换它。
@DavidHallbergJönsson的回答在Vue.js 2中完美无缺。如果你想在Vue的组件结构中特别想要它:heroku run lein repl --size=standard-2x
如果您想在链接中使用编程方式,那么some browsers don't allow you to trigger click events on input type="file"
elements就不会那么容易了。你最好的选择就是这样。
(另外,从技术上讲,你仍然可以在vue中使用jQuery,因此如果你想要它,那个链接中的代码仍然可以工作。)
如果您想知道如何处理上传文件,已预先制作many tutorials和some components。
答案 1 :(得分:0)
您实际上只能使用CSS as explained here。
执行此操作示例(来自上面的链接):
.fileContainer {
overflow: hidden;
position: relative;
}
.fileContainer [type=file] {
cursor: inherit;
display: block;
font-size: 999px;
filter: alpha(opacity=0);
min-height: 100%;
min-width: 100%;
opacity: 0;
position: absolute;
right: 0;
text-align: right;
top: 0;
}
/* Example stylistic flourishes */
.fileContainer {
background: red;
border-radius: .5em;
float: left;
padding: .5em;
}
.fileContainer [type=file] {
cursor: pointer;
}
}
<p>So various methods prevent file upload inputs from being styled conveniently. But that needn't be the case!</p>
<label class="fileContainer">
Click here to trigger the file uploader!
<input type="file"/>
</label>