今天有個需求,在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) },
