uni-app之数据状态改动后页面不刷新踩坑

今天有个需求,在onshow里面执行函数,请求过来一堆代取的包裹(快递),然后勾选之后把数据集合放到一个list里面给后端发过去,这些包裹状态就变成了已取,正常情况下应该是到了下一个界面,但是uni-app的request请求并没有实时更新,这些勾选完的快递还在,只有刷新页面才会消失,我这时候的第一想法是在勾选完之后发送list的函数之后重新调用页面加载函数,但是服务器处理数据明显需要时间,要远不及js的执行顺序来的快,但是这种重新请求数据的逻辑上是可行的,所以我利用了一个延时器,在一秒之后重新请求,这个时间足够服务器响应,也就完成了一个数据虚假实时更新,希望uni-app以后能更加完善,解决掉这个问题,还有v-for在自定义组件失效,以及诸多坑。

页面加载函数

getWaiting() {
            var that=this
            that.Post(
                'http://192.168.3.148:8084/takeServiceOrder/findServiceOrderBySubstitute',
                {
                    serviceUserId: that.userId,
                    status: 0
                },
                data => {
                    that.listone.length = 0;
                    for (var i = 0; i < data.length; i++) {
                        that.listone.push({
                            id: data[i].id,
                            takeDeliveryOrderId: data[i].takeDeliveryOrderId,
                            parcelId: data[i].parcelId,
                            cuId: data[i].cuId,
                            name: data[i].nickName,
                            phone: data[i].phone,
                            address: data[i].campusName + data[i].floorNumber + '号楼' + data[i].doorNumber,
                            point: data[i].pickupAddress,
                            company: data[i].logisticsName,
                            number: data[i].pickCode,
                            checked: true
                        });
                    }
                }
            );
        },

提交请求函数

sendId() {
            var that=this
            that.sendlistone.length = 0;
            for (var i = 0; i < that.listone.length; i++) {
                if (that.listone[i].checked == true) {
                    that.sendlistone.push({
                        id: that.listone[i].id,
                        takeDeliveryOrderId: that.listone[i].takeDeliveryOrderId,
                        parcelId: that.listone[i].parcelId,
                        cuId: that.listone[i].cuId,
                        status: '1'
                    });
                }
            }
            that.Post(
            'http://192.168.3.148:8084/takeServiceOrder/update',
            {
                "commonIdBos":that.sendlistone
            },
            (data)=>{
                console.log(data)
            }
            )
            setTimeout(()=>{
                this.getWaiting()
            }, 1000)
        },
原文地址:https://www.cnblogs.com/hurenjie/p/11856808.html