海公牛
海公牛
  • 发布:2024-05-16 14:42
  • 更新:2024-05-16 14:52
  • 阅读:58

【报Bug】路由跳转之前开启loading,跳转后没有将this.isLoading置为false,但loading框自动关闭了。

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win11

HBuilderX类型: 正式

HBuilderX版本号: 4.14

手机系统: Android

手机系统版本号: Android 13

手机厂商: 华为

手机机型: HUAWEI Mate 40 Pro

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

从任务列表页面点击任一任务,跳转至设备列表页

预期结果:

从任务列表页点击任务,到跳转设备列表数据加载完毕,这一整个过程都需要展示loading框

实际结果:

loading框仅出现1-2秒后自动关闭,此时设备列表页面数据尚未加载完,页面显示【数据为空】

bug描述:

路由之前代码:

toDetail (checkTask) {  
      console.log("toDetail", checkTask);  
      this.isLoading = true;  
      uni.navigateTo({ url: '/pages/work/inspection/equipList?taskId=' + checkTask.taskId + '&taskType=' + checkTask.taskType + '&taskStatus=' + checkTask.taskStatus + '&taskName=' + checkTask.taskName })      
    },

目标页面代码:

onLoad (params) {  
        this.taskId = params.taskId  
        this.taskType = params.taskType  
        this.taskStatus = params.taskStatus  
        this.title = params.taskName  

        // this.loadData();  
        var barcodeModel = uni.requireNativePlugin("iData-BarcodePlugin-BarcodeModule");  
        //接口initScan(UniJSCallback callback)  
        barcodeModel.initScan((ret) => {  
            uni.showToast({  
                message: ret,  
                duration: 1.5  
            });  
        });  
        /* //获取扫码结果  
        var globalEvent = uni.requireNativePlugin('globalEvent');  
        globalEvent.addEventListener('iDataBarcodeEvent', (e) => {  
            let equipNo = e.barcode.substring(0, e.barcode.indexOf("|"));  
            this.checkScanCode(equipNo);  
        }); */  
      },  
      onShow() {  

      this.loadData();  
      // 页面显示时添加扫码事件监听  
      this.addBarcodeEventListener();  
      },  

// 加载设备列表  
        loadData () {  
          const app = this;  
          let params = {  
                    'scTaskId': app.taskId,  
                    'pageSize': 1000,  
                  }  
          InspectionApi.listTaskMemu(params).then(response => {  
        app.equipList = response.rows.sort((item1, item2) => item1.checked > item2.checked ? 1 : -1);  
        app.list = app.equipList;  
        var finishList = app.equipList.filter(item => {return item.checked !== '0'});  
        app.enableCommit = finishList.length === app.equipList.length;  
          });  
        },
2024-05-16 14:42 负责人:无 分享
已邀请:
海公牛

海公牛 (作者)

值得一提的是,用内置浏览器运行时是OK的。只有在真机运行会出现这个问题,而且100%必现。

  • DCloud_UNI_LXH

    意思是在 app 上,跳转页面自动关闭了 loading,但是 web 上没有。你可以先尝试在目标页面打开 loading

    2024-05-20 10:55

  • 海公牛 (作者)

    回复 DCloud_UNI_LXH: 试过了,效果是一样的

    2024-05-20 11:23

  • DCloud_UNI_LXH

    回复 海公牛: 你的意思是你在跳转页面后,请求前去 loading,也会在 loading 2s 自动关闭?

    2024-05-20 13:56

  • 海公牛 (作者)

    回复 DCloud_UNI_LXH: 是的,在this.loadData(); 之前再次打开loading没有反应,和没加的效果一样,也是跳转页面立马就关闭loading

    2024-05-20 16:17

  • 海公牛 (作者)

    回复 DCloud_UNI_LXH: 大佬要是有空的话加我qq,帮忙远程调试一下看看吧

    2024-05-20 16:18

  • 海公牛 (作者)

    回复 海公牛: 603308791

    2024-05-20 16:18

  • DCloud_UNI_LXH

    回复 海公牛: 简化你的逻辑,麻烦新建一个模板复现一下你的问题,然后把模板上传上来

    2024-05-21 11:24

  • 海公牛 (作者)

    回复 DCloud_UNI_LXH: 新建模板,是需要我把关键代码上传上来的意思吗?

    2024-05-24 14:59

  • DCloud_UNI_LXH

    回复 海公牛: 把新建的那个 demo 项目上传上来,用最简单的代码来复现你的 Bug

    2024-05-27 11:10

要回复问题请先登录注册