如果官方默认的上传组件下面加了几个字,怎么点击字的时候也能实现上传功能?
element 里面有一个手动上传
<el-upload
class="upload-demo"
ref="upload"
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
:on-remove="handleRemove"
:file-list="fileList"
:auto-upload="false">
<el-button slot="trigger" size="small" type="primary">选取文件</el-button>
<el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上传到服务器</el-button>
<div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>
<script>
export default {
data() {
return {
fileList: [{name: 'food.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}, {name: 'food2.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}]
};
},
methods: {
submitUpload() {
this.$refs.upload.submit();
},
handleRemove(file, fileList) {
console.log(file, fileList);
},
handlePreview(file) {
console.log(file);
}
}
}
</script>
<el-upload
ref="upload"
class="avatar-uploader"
action="/file/upload/uploadFile"
:show-file-list="false"
:data="fileData"
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload">
<div class="el-upload__tip" slot="tip"><span @click="click">上传</span></div>
</el-upload>
click() {
this.$refs['upload'].$children[0].$refs.input.click();
}
handleAvatarSuccess() {
this.$refs.upload.clearFiles();
}
补充 vue2
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/element-ui/2.15.3/index.min.js"></script>
</head>
<div id="app">
<el-upload ref="upload" class="avatar-uploader" action="/file/upload/uploadFile">
<div class="el-upload__tip" slot="tip"><span @click="btn">上传</span></div>
</el-upload>
</div>
<body>
</body>
<script>
var app = new Vue({
el: '#app',
data: {
message: 'Hello Vue!'
},
methods: {
btn: function () {
console.log("upload");
console.log(this.$refs['upload'].$children[0]);
console.log("------------------------------");
console.log(this.$refs['upload'].$children[0].$refs.input);
}
}
})
</script>
</html>
补充 vue3
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
2 回答4.7k 阅读✓ 已解决
4 回答4.3k 阅读✓ 已解决
通过css实现不就挺好?将element上传组件的可点击区域覆盖到点击上传。 使得点击 ”点击上传“ 就是点击了上传组件