vue treeselect获取当前选中项的label实例


Posted in Javascript onAugust 31, 2020

我就废话不多说了,大家还是直接看代码吧~

<treeselect :placeholder="$t('taskManage.lockTask.selDeptId')"
               :options="deptTree"
               :normalizer="normalizer"
               v-model="formData.deptId"
               @select="selectDepart">
</treeselect>
// 获取当前选中部门的名称
selectDepart(val) {
   console.log('selectDepart', val)
   this.formData.deptName = val.name
}

结果如下所示,可以获取到当前选中项的信息:

vue treeselect获取当前选中项的label实例

补充知识:vue中element-ui 树形控件-树节点的选择(选中当前节点,获取当前id并且获取其父级id)

Element-ui官网给的方法

getCheckedKeys() { console.log(this.$refs.tree.getCheckedKeys()); },

这种只有在所有子级都被选中的情况下才能获得父级的id,如果不选中所有的子级那么获取得到的id就只有子级的。但是一般提交数据时后台都需要父级id的。

有两种方法解决:

1 ,找到项目中的\node_modules\element-ui\lib\element-ui.common.js文件

2,搜索文件中的TreeStore.prototype.getCheckedNodes方法中的

if (child.checked && (!leafOnly || leafOnly && child.isLeaf)) {
     checkedNodes.push(child.data);
    }

3,修改为

if ((child.checked || child.indeterminate) && (!leafOnly || leafOnly && child.isLeaf)) {
     checkedNodes.push(child.data);
    }

4,然后重启项目

console.log(this.$refs.tree.getCheckedKeys());就可以拿到父节点的ID啦

第二种方法:复制代码

代码:要有pid:xxx

methods: {
   getCheckedNodes() {
    var rad=''
    var ridsa = this.$refs.tree.getCheckedKeys().join(',')// 获取当前的选中的数据[数组] -id, 把数组转换成字符串
    var ridsb = this.$refs.tree.getCheckedNodes()// 获取当前的选中的数据{对象}
    ridsb.forEach(ids=>{//获取选中的所有的父级id
     rad+=','+ids.pid
    })
    rad=rad.substr(1) // 删除字符串前面的','
    var rids=rad+','+ridsa
    var arr=rids.split(',')// 把字符串转换成数组
    arr=[...new Set(arr)]; // 数组去重
    rids=arr.join(',')// 把数组转换成字符串
    console.log(rids)
   }
  }

测试代码

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

<div class="buttons">
 <el-button @click="getCheckedNodes">获取</el-button>
 <el-button @click="resetChecked">清空</el-button>
</div>
 </div>
 </template>
 <script>
 export default {
  methods: {
   getCheckedNodes() {
    var rad=''
    var ridsa = this.$refs.tree.getCheckedKeys().join(',')// 获取当前的选中的数据[数组] -id, 把数组转换成字符串
    var ridsb = this.$refs.tree.getCheckedNodes()// 获取当前的选中的数据{对象}
    ridsb.forEach(ids=>{//获取选中的所有的父级id
     rad+=','+ids.pid
    })
    rad=rad.substr(1) // 删除字符串前面的','
    var rids=rad+','+ridsa
    var arr=rids.split(',')// 把字符串转换成数组
    arr=[...new Set(arr)]; // 数组去重
    rids=arr.join(',')// 把数组转换成字符串
    console.log(rids)
   },
   resetChecked() {
    this.$refs.tree.setCheckedKeys([]);
   }
  },

  data() {
   return {
    data2: [{
     pid:0,
     path:xxxx,
     id: 1,
     label: '一级 1',
     children: [{
      pid:1,
      path:xxxx,
      id: 11,
      label: '二级 1-1'
     },
     {
      pid:1,
      path:xxxx,
      id: 12,
      label: '二级 1-2'
     },
     {
      pid:1,
      path:xxxx,
      id: 13,
      label: '二级 1-3'
     }]
    }],
    defaultProps: {
     children: 'children',
     label: 'label'
    }
   };
  }
 };
</script>
 </script>
 <style scoped>
 </style>

如果是三级或者是多级,响应的数据格式必须要有'path:xxxx',这样才能获取其父级id

响应的数据格式

{
 "data": [
   {
     "id": 30,
     "path": xxxx,
     "children": [
       {
         "id": 101,
         "path": xxxx,
         "children": [
           {
             "id": 104,
             "path": xxxx,
             "children": [
               {
                 "id": 105,
                 "path": xxxx
               }
             ]
           }
         ]
       }
     ]
   }
 ],
 "meta": {
   "msg": "获取成功",
   "status": 200
 }
}

这里是引用~

以上这篇vue treeselect获取当前选中项的label实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
禁用页面部分JavaScript方法的具体实现
Jul 31 Javascript
JavaScript编写连连看小游戏
Jul 07 Javascript
jQuery实现多级联动下拉列表查询框
Jan 18 Javascript
AngularJS入门心得之directive和controller通信过程
Jan 25 Javascript
浅析Javascript中bind()方法的使用与实现
Apr 29 Javascript
Javascript HTML5 Canvas实现的一个画板
Apr 12 Javascript
angular 用拦截器统一处理http请求和响应的方法
Jun 08 Javascript
微信小程序自定义音乐进度条的实例代码
Aug 28 Javascript
vue删除html内容的标签样式实例
Sep 13 Javascript
详解vuex之store拆分即多模块状态管理(modules)篇
Nov 13 Javascript
Node使用Nodemailer发送邮件的方法实现
Feb 24 Javascript
Vue鼠标滚轮滚动切换路由效果的实现方法
Aug 04 Vue.js
vue 监听 Treeselect 选择项的改变操作
Aug 31 #Javascript
搭建vscode+vue环境的详细教程
Aug 31 #Javascript
vue组件中实现嵌套子组件案例
Aug 31 #Javascript
vue 项目中当访问路由不存在的时候默认访问404页面操作
Aug 31 #Javascript
详解vue v-model
Aug 31 #Javascript
vue.js 输入框输入值自动过滤特殊字符替换中问标点操作
Aug 31 #Javascript
vue路由结构可设一层方便动态添加路由操作
Aug 31 #Javascript
You might like
PHP调用Linux的命令行执行文件压缩命令
2013/01/27 PHP
自己写的兼容低于PHP 5.5版本的array_column()函数
2014/10/24 PHP
PHP中开启gzip压缩的2种方法
2015/01/31 PHP
捕获关闭窗口的脚本
2009/01/10 Javascript
JavaScript面向对象之静态与非静态类
2010/02/03 Javascript
JS cookie中文乱码解决方法
2014/01/28 Javascript
apply和call方法定义及apply和call方法的区别
2015/11/15 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(二)
2016/09/14 Javascript
AngularJS 2.0入门权威指南
2016/10/08 Javascript
javascript实现考勤日历功能
2018/11/29 Javascript
解决微信小程序云开发中获取数据库的内容为空的方法
2019/05/15 Javascript
微信小程序 SOTER 生物认证DEMO 指纹识别功能
2019/12/13 Javascript
springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)
2020/10/15 Javascript
JS如何监听div的resize事件详解
2020/12/03 Javascript
[01:18:36]LGD vs VP Supermajor 败者组决赛 BO3 第一场 6.10
2018/07/04 DOTA
Python中多线程thread与threading的实现方法
2014/08/18 Python
收藏整理的一些Python常用方法和技巧
2015/05/18 Python
python dict.get()和dict['key']的区别详解
2016/06/30 Python
Python数据操作方法封装类实例
2017/06/23 Python
Python之ReportLab绘制条形码和二维码的实例
2018/01/15 Python
python实现大转盘抽奖效果
2019/01/22 Python
Flask框架单例模式实现方法详解
2019/07/31 Python
python实现提取str字符串/json中多级目录下的某个值
2020/02/27 Python
python爬取音频下载的示例代码
2020/10/19 Python
详解Open Folder as PyCharm Project怎么添加的方法
2020/12/29 Python
五款漂亮的纯CSS3动画按钮的实例教程
2014/11/21 HTML / CSS
CSS3中的@keyframes关键帧动画的选择器绑定
2016/06/13 HTML / CSS
美国知名的摄影器材销售网站:Adorama
2017/02/01 全球购物
Ashford台湾:以折扣价提供奢华的男女用表款
2019/12/04 全球购物
英国Iceland杂货店:网上食品购物
2020/12/16 全球购物
建筑工程技术应届生求职信
2013/11/17 职场文书
井冈山红色之旅感想
2014/10/07 职场文书
关于运动会广播稿50字
2014/10/18 职场文书
创业计划书之外语培训班
2019/11/02 职场文书
Python tensorflow卷积神经Inception V3网络结构
2022/05/06 Python
SQL Server 中的事务介绍
2022/05/20 SQL Server