el-table 复选框 默认勾选和禁止勾选

<template>
  <div>
    <div>
      <el-table
        ref="multipleTable"
        :data="tableData"
        border
        class="tables"
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55" :selectable="selectEnable">
        </el-table-column>
        <el-table-column label="日期" width="320">
          <template slot-scope="scope">{{ scope.row.date }}</template>
        </el-table-column>
        <el-table-column prop="name" label="姓名" width="220">
        </el-table-column>
        <el-table-column prop="address" label="地址" show-overflow-tooltip />
      </el-table>
    </div>

    <div style="margin-top: 20px">
      <el-button @click="toggleSelection([tableData[1], tableData[2]])"
        >切换第二、第三行的选中状态</el-button
      >
      {{ multipleSelection }}
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        {
          date: "2016-05-07",
          name: "王小虎1",
          address: "上海市普陀区金沙江路 1518 弄",
        },
        {
          date: "2016-05-07",
          name: "王小虎2",
          address: "上海市普陀区金沙江路 1518 弄",
        },
        {
          date: "2016-05-07",
          name: "王小虎3",
          address: "上海市普陀区金沙江路 1518 弄",
        },
        {
          date: "2016-05-07",
          name: "王小虎4",
          address: "上海市普陀区金沙江路 1518 弄",
        },
        {
          date: "2016-05-07",
          name: "王小虎5",
          address: "上海市普陀区金沙江路 1518 弄",
        },
        {
          date: "2016-05-07",
          name: "王小虎6",
          address: "上海市普陀区金沙江路 1518 弄",
        },
      ],
      multipleSelection: [],
    };
  },
  created() {
    //必须使用
    this.$nextTick(() => {
      this.$refs.multipleTable.toggleRowSelection(this.tableData[0], true);
    });
  },
  methods: {
    toggleSelection(rows) {
      if (rows) {
        rows.forEach((row) => {
          this.$nextTick(() => {
            this.$refs.multipleTable.toggleRowSelection(row, true);
            // this.$refs.multipleTable.toggleRowSelection(row, false);
            // this.$refs.multipleTable.toggleRowSelection(row);
          });
        });
      }
    },
    handleSelectionChange(val) {
      this.multipleSelection = val;
    },
    selectEnable(row, rowIndex) {
      return rowIndex;
    },
  },
};
</script>
<style lang='scss' scoped>
.tables {
  height: calc(100vh - 100px);
  overflow: auto;
}

</style>
  1. 复选框
<el-table-column type="selection" width="55" :selectable="selectEnable" />

selectable : 仅对 type=selection 的列有效,类型为 Function,Function 的返回值用来决定这一行的 CheckBox 是否可以勾选
selectEnable: Function(row, index)

//默认第一条不可勾选的
selectEnable(row, rowIndex) {
  //rowIndex===0(false)
      return rowIndex;
    },

返回值 1. true 复选框是可以勾选的 2. false 复选框是禁用的

  1. 默认值勾选
//必须使用 this.$nextTick,因为可能视图还没渲染或者更新,没法通过refs获取DOM
    this.$nextTick(() => {
      this.$refs.multipleTable.toggleRowSelection(this.tableData[0], true);
    });

toggleRowSelection: 用于多选表格,切换某一行的选中状态,如果使用了第二个参数,则是设置这一行选中与否(selected 为 true 则选中)
toggleRowSelection(row,flag)
row: 当前被选中的数据
flag: 可填 (false,true,不填)

  1. flag :false不可被选中
  2. flag :true 永久被选中
  3. flag 不填 双击点击按钮,选中会消失;单击点击按钮,会被选中
//可以一个一个试一试
toggleSelection(rows) {
      if (rows) {
        rows.forEach((row) => {
          this.$refs.multipleTable.toggleRowSelection(row, true);
          // this.$refs.multipleTable.toggleRowSelection(row, false);
          // this.$refs.multipleTable.toggleRowSelection(row);
        });
      }
    },
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
el-checkbox 默认的条件是根据 v-model 绑定的值来确定的。当 v-model 绑定的值与 el-checkbox 的 label 属性相匹配时,el-checkbox 将会被默认。 在 el-checkbox-group 标签上,通过设置 v-model="role.permission" 来绑定后台获取到的数据。如果 role.permission 包含 el-checkbox 的 label 值,则相应的 el-checkbox 会被默认。 另外,在使用 v-model 绑定值时,如果绑定的值为布尔值 true 或 false,el-checkbox 能够根据绑定的值来默认或取消选。 所以,el-checkbox 默认的条件是:v-model 绑定值与 el-checkbox 的 label 属性相匹配,或者绑定值为布尔 true。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [element UI checkbox,通过后台传来的数据默认](https://blog.csdn.net/lolhuxiaotian/article/details/123656267)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [ElementUIel-checkbox使用v-model绑定默认](https://blog.csdn.net/weixin_45502872/article/details/114934912)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值