代码地址如下:
https://github.com/GavinZhuLei/vue-form-making/blob/master/src/components/Upload/index.vue#L204
部分代码如下:
xhr.onreadystatechange = () => {
console.log(xhr)
if (xhr.readyState === 4) {
let resData = JSON.parse(xhr.response)
if (resData && resData.url) {
this.$set(this.fileList, this.fileList.findIndex(item => item.key === key), {
...this.fileList[this.fileList.findIndex(item => item.key === key)],
url: resData.url,
percent: 100,
status: 'success', // 这里是我加的,直接写在这里不行吗?
})
this.$emit('input', this.fileList) // 这里是我加的,直接写在这里不行吗?
// 这里为啥要 setTimeout ?
setTimeout(() => {
this.$set(this.fileList, this.fileList.findIndex(item => item.key === key), {
...this.fileList[this.fileList.findIndex(item => item.key === key)],
status: 'success'
})
this.$emit('input', this.fileList)
}, 200)
} else {
this.$set(this.fileList, this.fileList.findIndex(item => item.key === key), {
...this.fileList[this.fileList.findIndex(item => item.key === key)],
status: 'error'
})
this.fileList.splice(this.fileList.findIndex(item => item.key === key), 1)
}
}
}