Element-ui 给table里的每个按钮设置loading

项目场景:

        在table中,点击不同行的重新升级按钮,只有点击的按钮进行加载,请求后台成功后停止加载。


问题描述:

      利用elementui里面的v-loading给el-table里面的按钮加这个指令时,点击其中一个按钮全部的按钮会出现一个loading的效果。怎样解决这个问题呢?


解决方案:

<el-button @click="otaup(scope.row)" :loading="scope.row.loading" >重新升级</el-button>

 

   //重新升级功能

    async otaupagain(row){

      row.loading = true;

      console.log(row);

      let infouser = JSON.parse(window.localStorage.getItem('userinfo')).username;

      await this.getRequest(`/job/reUpdrade?                   taskId=${row.taskId}&executor=${infouser}`).then(res=>{

         console.log(res);

         if(res.code == 0){

           row.loading = false;

           this.$message.success('已下发重新升级任务!');

           this.$router.push({

               path:'/RackinfoUpdata',

               query:{rackinfo:JSON.stringify({id:this.rowinfohis.id,taskId:res.data.taskId})},

          });

        }else{

          row.loading = false

          this.$message.error(res.message);

        }

      });

    },

   

        //渲染表格的时候给每条表格数据加一个属性loading  默认值为 false;

        this.runhiscasetableData = res.data.map(res=>{//处理数据给表格

            //添加属性,设置loading默认值

            this.$set(res, 'loading', false)

            return res

        });

 

       从代码可以看出,是给每一行的按钮都设置了一个加载的状态,而不是设置一个全局的变量。在请求前,设置此行的按钮为加载状态,在请求成功后取消加载。

       需要注意的是,在进行网络请求中修改加载状态时,需先设置其初始值。否则不生效。设置初始值也就是在getList()方法时进行的,设置每行的loading默认初始值是false。这是因为在请求过程中修改状态时Vue不能检测到对象属性的添加或删除,就必须先给对象添加此属性,然后再去修改。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值