vue一个写法错误,求助

发布于 2022-09-12 22:53:48 字数 1170 浏览 24 评论 0

使用vant中的uploader上传图片,结果总是报错

<van-col span="24">
                    <van-uploader v-model="certificatesimg1" multiple :max-count="1" upload-text="驾驶证" :after-read="afterRead" :name="1"/>
                    <van-uploader v-model="certificatesimg2" multiple :max-count="1" upload-text="行驶证" :after-read="afterRead" :name="2"/>
                </van-col>
                
                .......
                
<srcipt>
.....
methods:{
    afterRead(file,detail) {
                const that = this;
              let fd = new FormData()
              let dname = detail.name
              fd.append('file', file.file)
              axios.post('../api/common/upload', fd, {
                headers: {
                  'Content-Type': 'multipart/form-data',
                  'token': localStorage.getItem('token'),
                }
              }).then(res => {
                that.certificatesimg.dname = res.data.data.url;
              }).catch(err => {
                alert(err)
              })
            },

可以正常上传图片,就是会提示错误
image.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

关于从前 2022-09-19 22:53:48

certificatesimg 没取到。在你提供的代码里面也没有。

你可以自己排查一下这个变量,也可以不相关的代码补全一下

尹雨沫 2022-09-19 22:53:48

应该是这一句报错了,that.certificatesimg 是 undefined,是否定义了这个变量,赋值是否正确?

that.certificatesimg.dname = res.data.data.url;
醉生梦死 2022-09-19 22:53:48

完整点代码

<van-col span="24">

                <van-uploader v-model="certificatesimg1" multiple :max-count="1" upload-text="驾驶证" :after-read="afterRead" :name="1"/>
                <van-uploader v-model="certificatesimg2" multiple :max-count="1" upload-text="行驶证" :after-read="afterRead" :name="2"/>
            </van-col>
            
            .......
            

<srcipt>
.....
data() {

        return {
            certificatesimg1: [],
            certificatesimg2: [],
    ......

methods:{

afterRead(file,detail) {
          const that = this;
          let fd = new FormData()
          fd.append('file', file.file)
          axios.post('../api/common/upload', fd, {
            headers: {
              'Content-Type': 'multipart/form-data',
              'token': localStorage.getItem('token'),
            }
          }).then(res => {
            //that.certificatesimg.dname = res.data.data.url;
            that['certificatesimg'+detail.name] = res.data.data.url;
          }).catch(err => {
            alert(err)
          })
        },

我上面的在获取完数据成功后赋值修改为:
that['certificatesimg'+detail.name] = res.data.data.url;

现在报:
vue.runtime.esm.js:1888 TypeError: this.fileList.map is not a function
image.png

图片啥的可以正常上传,就是会报错!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文