ElementUI--- el-table复选框,选中哪行,哪行对应的操作按钮禁用

21 篇文章 2 订阅

直接看图的效果。
选中第二行,第二行对应的操作按钮禁用,其他行不受影响;
在这里插入图片描述
代码:

<template>
  <div>
    <el-table
      ref="nRiskRateData"
      :data="nRiskRateData"
      tooltip-effect="dark"
      style="width: 100%"
      @selection-change="handleSelectionChange"
      @select="select"
    >
      <el-table-column type="selection" width="55"> </el-table-column>
      <el-table-column label="a" width="200" prop="riskSorted" align="center">
      </el-table-column>
      <el-table-column label="c" width="200" prop="riskCode" align="center">
      </el-table-column>
      <el-table-column label="b" width="200" prop="riskName" align="center">
      </el-table-column>
      <el-table-column label="d" width="200" prop="rateTop" align="center">
        <template slot-scope="scope">
          <el-input
            v-model="scope.row.rateTop"
            :disabled="scope.row.isDisabled"
          >
            <template slot="append">%</template>
          </el-input>
          <el-button :disabled="scope.row.isDisabled">按钮</el-button>
          <!-- 真是项目中我使用svg生成的button,没有disabled属性,我是用pointer-events属性,让点击事件失效,参考这个div的写法 -->
          <div
            :style="{
              'pointer-events': scope.row.isDisabled
                ? 'none'
                : 'visiblePainted',
            }"
            @click="click"
          >
            我有点击事件,点我
          </div>
        </template>
      </el-table-column>
    </el-table>
  </div>
</template>
<script>
export default {
  data() {
    return {
      nRiskRateData: [
        {
          riskSorted: "aaa",
          riskCode: "AAAA",
          riskName: "hello",
          rateTop: 10,
        },
        {
          riskSorted: "bbb",
          riskCode: "BBBB",
          riskName: "hi",
          rateTop: 100,
        },
      ],
      isNot: false,
    };
  },
  methods: {
    // 最开始我考虑使用val的长度来判断,这样会导致,选中一个,所有的操作按钮都禁用了;
    handleSelectionChange(val) {
        // 
      // if(val.length > 0){
      //      this.isNot = true
      // }else{
      //     this.isNot = false
      // }
    },
    // 使用select这样写,选中哪行哪行的按钮禁用
    select(selection, row) {
      console.log("selection", selection);
      console.log("row", row);
      let selected = selection.length && selection.indexOf(row) !== -1;
      console.log("判断", selection.length);
      if (selected === true) {
        row.isDisabled = true; //这个isDisabled 是每行数据里都存在的一个属性
      } else {
        row.isDisabled = false;
      }
    },
    click() {
      console.log("打印");
    },
  },
};
</script>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值