element-ui中getCheckedKeys和getCurrentKey获取不到值的问题可能是因为node-key设置的有问题

后端返回的数据唯一key值是orgId,通过props属性把id和orgId以及label和orgName对应上了,此时node-key绑定的是id,而是orgId

<Tree
        ref="tree"
        :props="{id: 'orgId', label: 'orgName'}"
        :data="groupList"
        :filter-node-method="nodeFilter"
        :current-node-key="userGroupId"
        node-key="orgId"
        show-checkbox
        highlight-current
        default-expand-all
        check-strictly
        @node-click="handleNodeClick"
        @check-change="handleCheckChange">
        <span slot-scope="{ node, data }" class="custom-tree-node">
          <span>{{ node.label }}</span>
          <i v-if="node.checked" class="el-icon-edit" @click="editUserGroup(data, node)" />
          <i v-if="node.checked" class="el-icon-delete" @click="deleteOrg(data)"></i>
        </span>
      </Tree>

groupList是通过父组件创过来,所以需要监听groupList的变化后重新渲染key,通过setCurrentKey设置高亮时需要等DOM 更新循环结束之后执行延迟回调,否则直接使用this.$refs.tree.setCurrentKey,是拿不到方法的,报错

  watch: {
    groupList(val) {
      console.log(val);
      if (Array.isArray(val) && val.length > 0) {
        const userGroupId = this.userGroupId;
        if (userGroupId) {
          this.$nextTick(() => {
            this.$refs.tree.setCurrentKey(userGroupId);
          });
        }
      }
    }
  },

你可能感兴趣的:(element-ui中getCheckedKeys和getCurrentKey获取不到值的问题可能是因为node-key设置的有问题)