vue饿了吗树表节点添加失效??

好不容易能用好一点组件,结果问题一大堆!

<!-- 新增按钮 -->
              <el-button
                icon="el-icon-plus"
                circle
                :size="iconSize"
                type="success"
                @click="NodeAdd(node, data)"
              ></el-button>

这是给节点添加的html

NodeAdd(n, d) {
      //新增节点
      console.log(n, d);
      //判断层级
      if (n.level >= 3) {
        this.$message.error("最多只支持三级!");
        return false;
      }
      //新增数据
      d.list.push({
        id: ++this.maxexpandId,
        name: "新增节点",
        pid: d.id,
        list: []
      });
      //同时展开节点
      if (!n.expanded) {
        n.expanded = true;
      }
    }

这是给节点添加的方法,其他给顶级节点没问题,但是给二级节点添加就报错

clipboard.png
我不清楚哪里写错了???好累呀!

阅读 1.5k
2 个回答

看你打印出来的d.list是一个对象并不是一个数组,对象并没有push方法,所以报错了!

NodeAdd(n, d) {
      //新增节点
      console.log(n, d);
      //判断层级
      if (n.level > 3) {
        this.$message.error("最多只支持三级!");
      }else{
          //你的问题应该出现在这里,新增一级默认是没有list,也就是d.list为undefined,push的时候报错了
          if (!d.list) {
            this.$set(d, 'list', []);
          }
          //新增数据
          d.list.push({
            id: ++this.maxexpandId,
            name: "新增节点",
            pid: d.id,
            list: []
          });
          //同时展开节点
          if (!n.expanded) {
            n.expanded = true;
          }
      }
    }
推荐问题