vue elementui中实现动态增加删除一行

<div id="root">
  <pre>
  {{data}}
  </pre>
  <hr />
  <el-tree
    :data="data"
    node-key="id"
    default-expand-all
    :props="treeProps"
    :expand-on-click-node="false"
  >
    <span class="custom-tree-node" slot-scope="{ node, data }">
      <input type="text" v-model="data.val" />
      <span>
        <el-button
          type="text"
          size="mini"
          @click="() => append(data)"
          v-if="node.level<4"
        >
          增加子级
        </el-button>
        <el-button type="text" size="mini" @click="() => remove(node, data)">
          删除
        </el-button>
      </span>
    </span>
  </el-tree>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

<link
  rel="stylesheet"
  href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"
/>
<script src="https://unpkg.com/element-ui/lib/index.js"></script>

<script>
  let testId = 666;

  const vm = new Vue({
    el: "#root",
    data() {
      return {
        treeProps: {
          label: "name",
        },
        data: [
          // {
          //   id: 1,
          //   label: "一级 3",
          //   children: [],
          // },
        ],
      };
    },

    created() {
      this.data = [
        { id: 1, val: "1" },
        { id: 2, val: "2" },
        { id: 3, val: "3" },
      ];
    },

    methods: {
      handleNodeClick(data) {
        console.log(data);
      },

      append(data) {
        const newChild = { id: testId++, name: "testtest", children: [] };
        if (!data.children) {
          this.$set(data, "children", []);
        }
        data.children.push(newChild);
      },

      change(node, data) {
        alert("切换逻辑");
      },

      remove(node, data) {
        const parent = node.parent;
        const children = parent.data.children || parent.data;
        const index = children.findIndex((d) => d.id === data.id);
        children.splice(index, 1);
      },
    },
  });
</script>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值