更改element-ui源码,控制tree组件每行是否显示选择框

修改源码的步骤:

1.github上下载element-ui源码

2.npm i下载依赖项。此处非常容易出错,和node的版本有关。本次主要是node-sass下载出错。使用的node是12版本,下载的node-sass是4.10版本。改成npm i node-sass@4.12单独下载node-sass后解决

3.修改源码。此次修改了elementui源代码tree/src/tree-node.vue

 

4.npm run dist,生成lib文件夹。

5.使用lib文件夹替换原项目中的lib。

在项目中使用修改后的tree时,data数据中添加noCheckBoxInLine,就可以控制选择框显示与否了。

Tree.vue

<template>
  <el-tree :data="data" show-checkbox node-key="id"> </el-tree>
</template>

<script>
let id = 1000;
export default {
  name: "tree",
  data() {
    const data = [
      {
        id: 1,
        label: "一级 1",
        showCheckbox: true,
        icon: "el-icon-user",
        children: [
          {
            id: 4,
            label: "二级 1-1",
            children: [
              {
                id: 9,
                label: "三级 1-1-1",
              },
              {
                id: 10,
                label: "三级 1-1-2",
              },
            ],
          },
        ],
      },
      {
        id: 2,
        label: "一级 2",
        children: [
          {
            id: 5,
            label: "二级 2-1",
          },
          {
            id: 6,
            label: "二级 2-2",
          },
        ],
      },
      {
        id: 3,
        label: "一级 3",
        children: [
          {
            id: 7,
            label: "二级 3-1",
          },
          {
            id: 8,
            label: "二级 3-2",
          },
        ],
      },
    ];
    return {
      data: JSON.parse(JSON.stringify(data)),
      data: JSON.parse(JSON.stringify(data)),
    };
  },
};
</script>

 App.vue

<template>
  <div>
    <!-- <Button /> -->
    <Tree />
  </div>
</template>

<script>
import Tree from "./components/Tree";
import Button from "./components/Button";

export default {
  components: { Button, Tree },
};
</script>

显示结果:

 此处这种设置,默认全部不显示选择框。当showCheckbox为true时本行显示

当tree组件本身属性show-checkbox为false时,showCheckbox无效,不显示选择框

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
element-ui tree组件选择取消选中后,如果想要将数据还原到之前的状态,可以使用以下方法: 1. 在取消选中时,保存当前的选中状态; 2. 在确认保存或者取消操作时,将保存的选中状态还原到之前的状态。 具体实现可以参考以下代码示例: ``` <template> <el-tree :data="data" :props="defaultProps" :default-checked-keys="defaultCheckedKeys" :default-expanded-keys="defaultExpandedKeys" node-key="id" @check-change="handleCheckChange" ></el-tree> </template> <script> export default { data() { return { data: [ { id: 1, label: '一级 1', children: [ { id: 11, label: '二级 1-1', }, { id: 12, label: '二级 1-2', }, ], }, { id: 2, label: '一级 2', children: [ { id: 21, label: '二级 2-1', }, { id: 22, label: '二级 2-2', }, ], }, ], defaultProps: { children: 'children', label: 'label', }, defaultCheckedKeys: [], defaultExpandedKeys: [], originCheckedKeys: [], // 保存原始选中状态 }; }, methods: { handleCheckChange(data, checked) { if (checked) { this.defaultCheckedKeys = data.checkedKeys; } else { this.originCheckedKeys = data.checkedKeys; } }, handleCancel() { this.defaultCheckedKeys = this.originCheckedKeys; }, handleSave() { // 处理保存操作 }, }, }; </script> ``` 在上述代码中,我们通过监听`check-change`事件来保存当前的选中状态。在取消操作中,我们将保存的选中状态还原到之前的状态;在保存操作中,我们可以将当前的选中状态保存到后端或者进行其他处理。 希望这个回答可以帮助到你。如果还有疑问,请随时提出。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值