如何把this.tpsz = newwz2 里面这个 tpsz变量 返回给全页面使用?

如何把this.tpsz = newwz2 里面这个 tpsz变量 返回给全页面使用?

img

    data() {
            return {
                tpsz: [],
            }
        },

    bb16(eid, wz, wz2, tpsz) {
                uni.chooseImage({
                    count: 1,
                    sizeType: ['compressed'],
                    sourceType: ['album', 'camera'],
                    success: function(res) {
                        uni.uploadFile({
                            url: wz + '1.asp?id1=7&id2=addoil&id3=' + eid, // 后端api接口
                            filePath: res.tempFilePaths[0], // uni.chooseImage函数调用后获取的本地文件路劲
                            name: 'file', //后端通过'file'获取上传的文件对象
                            fileType: 'image', // 指定上传的文件类型为图片
                            success: (res) => {
                                uni.showModal({
                                    content: res.data,
                                    showCancel: false
                                })
                                //读取数据开始

                                uni.request({
                                    url: wz + '1.asp',
                                    data: {
                                        id1: 6,
                                        id2: 'addoil',
                                        id3: eid
                                    },
                                    method: 'POST', //接收请求的方式,如果不传默认为POST
                                    header: {
                                        'content-type': 'application/x-www-form-urlencoded;charset=UTF-8',
                                    },
                                    success: (res) => {

                                        if (res.data.a4) {
                                            var newwz2 = ''
                                            for (let i = 0; i < res.data.a4[0].length; i++) { //this.a5.length代表该数组的下标    
                                                if (res.data.a4[0][i]) {
                                                    var newwz1 = res.data.a4[0][i]
                                                    res.data.a4[0][i].replace('..',
                                                        wz2);
                                                    newwz2 = [...newwz2, newwz1]
                                                }
                                            }
                                            this.tpsz = newwz2
                                        }
                                    }
                                })
                                //读取数据结束
                            },
                            fail: (err) => {
                                console.log('uploadImage fail', err);
                                console.log(err.data)
                                uni.showModal({
                                    content: err.errMsg,
                                    showCancel: false
                                });
                            }
                        })
                    }
                })

            },

在成功回调前面加个let that = this
that.tpsz = newwz2

  1. 前端vue项目他们的作用域一般限制比较严格.
  2. 你需要在bb16(eid, wz, wz2, tpsz) { 函数第一个 定义变量将当前this进行定义,let $this = this;
  3. 然后再success函数中处理完成使用$this.tpsz = newwz2 接收数组。
  4. 因为ajax相当于一个全新的函数作用域不同 不可以直接使用this操作。
    望采纳