vue树表结构根据json数据勾选相对应的选项?

纳兹咩
  • 66

用了element树表组件,在显示数据与自己所想不一样,

clipboard.png
这是我请求后台json返回的数据
clipboard.png
这点击展示的数据表,但是并没有按我写的逻辑展示那些被默认勾选的选项,
用户模块应该全部默认勾选中的,因为flag为true,而且当flag为true就是勾选的,为false时就不勾选,但是用了

setCheckedNodes(row) {
      this.roleId = row.id;
      RoleList({
        roleId: this.roleId
      })
        .then(res => {
          this.dialogFormVisible = true;
          if (res.code == 0) {
            this.$refs.tree.setCheckedNodes([{flag:true}]);
            this.roleStree = res.data;
          }
        })
        .catch(err => {});
    },

逻辑

<el-tree
          :data="roleStree"
          show-checkbox
          node-key="id"
          highlight-current
          default-expand-all
          ref="tree"
          :props="defaultProps"
        ></el-tree>

这里引用官方的例子

怎么没有生效呢?这里用的官方提供的方法,没有显示我要的效果

回复
阅读 1.8k
2 个回答

写了个简单的可以参考下,利用的setCheckedKeys
预览:https://jsfiddle.net/szjarph9/
核心方法递归获取到flag为true的子集,然后通过setCheckedKeys设置选中

getCheckedKeys(data){
      data.forEach(item => {
        //判断flag是否为true,并且有无子集,element-tree中父级设置选中的话,下面的子集也就全选中了,所有得排除掉
        if(item.flag === true && !item.children){
          this.checkedKeys.push(item.id)
      }
      if(item.children && item.children.length){
          //如果存在子集,递归调用该方法
          this.getCheckedKeys(item.children)
      }
    })
  }

clipboard.png
参数错了吧

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏