el-tree 在 v-for 中获取不到 getCheckedNodes

element-ui 中 el-tree 在 v-for 中使用,获取不到 getCheckedNodes() 和 getCheckedKeys(),报错:Error in v-on handler: “TypeError: this.$refs.tree.getCheckedNodes is not a function”

  <el-tree :data="layerControl"
    show-checkbox node-key="id"
    :props="defaultProps"
    @check="handleCheckChange"
    ref="tree" highlight-current>
  </el-tree>
  data() {
    return {
      layerControl: [
        {
          id: 1,
          label: '行政区划',
          children: [
            {
              id: 3,
              label: '社区'
            },
            {
              id: 4,
              label: '网格'
            }
          ]
        },
        {
          id: 2,
          label: '网格员'
        }
      ],
      defaultProps: {
        children: 'children',
        label: 'label'
      }
    }
  }
  methods: {
    handleCheckChange(data, checked, indeterminate) {
      console.log(this.$refs.tree)
      console.log(this.$refs.tree.getCheckedNodes())
      console.log(this.$refs.tree.getCheckedKeys())
    }
  }

vue.runtime.esm.js?2b0e:619 [Vue warn]: Error in v-on handler: “TypeError: this.$refs.tree.getCheckedNodes is not a function”

解决:

  <el-tree :data="layerControl"
    show-checkbox node-key="id"
    :props="defaultProps"
    @check="(click, checked)=>{handleCheckChange(click, checked)}"
    ref="tree" highlight-current>
  </el-tree>
  methods: {
    handleCheckChange(click, checked) {
      console.log(checked.checkedKeys)
      console.log(checked.checkedNodes)
    }
  }
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
el-tree组件的getCheckedNodes方法用于获取的节点。可以在@check-change事件调用this.$refs.tree.getCheckedNodes()方法来获取的节点。例如: ```javascript //节点选状态发生变化时的回调 handleCheckChange(data, checked, indeterminate) { //获取所有选的节点 let res = this.$refs.tree.getCheckedNodes() let arrDeptId = [] res.forEach((item) => { arrDeptId.push(item.value) }) // this.dataTree 就是选的数据 this.dataTree = arrDeptId } ``` 另外,也可以使用更简单的方法来获取的子节点和半选的节点: ```javascript //节点选状态发生变化时的回调 handleCheckChange(data, checked, indeterminate) { //获取所有选的子节点 let res1 = this.$refs.tree.getCheckedKeys() // 获取半选的节点 let res2 = this.$refs.tree.getHalfCheckedKeys() let arrDeptId = [...res1, ...res2] this.dataTree = arrDeptId } ``` 在el-tree组件,可以设置check-strictly属性来控制是否严格遵循父子节点不互相关联的做法,默认为false。另外,node-key属性用于标识每个树节点的唯一标识属性。例如: ```html <el-form-item label="权限"> <!-- check-strictly 在显示复选框的情况下,是否严格的遵循父子不互相关联的做法,默认为 false --> <!-- node-key 每个树节点用来作为唯一标识的属性,整棵树应该是唯一的 --> <el-tree ref="tree" :check-strictly="checkStrictly" :data="routes" node-key="id" :default-expanded-keys="expandedRoles" :props="defaultProps" show-checkbox /> </el-form-item> ``` 希望对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Element Tree 复选框获取的节点](https://blog.csdn.net/weixin_44640323/article/details/119415607)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [ElementUI tree控件获取的节点(含父节点)](https://blog.csdn.net/Irene1991/article/details/114969502)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值