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 相关文章推荐
一段利用WSH修改和查看IP配置的代码
May 11 Javascript
获取offsetTop和offsetLeft值的js代码(兼容)
Apr 16 Javascript
offsetHeight在OnLoad中获取为0的现象
Jul 22 Javascript
jQuery Ajax 上传文件处理方式介绍(推荐)
Jun 30 Javascript
微信公众号-获取用户信息(网页授权获取)实现步骤
Oct 21 Javascript
javascript实现简易计算器
Feb 01 Javascript
jQuery Form插件使用详解_动力节点Java学院整理
Jul 17 jQuery
JS中获取 DOM 元素的绝对位置实例详解
Apr 23 Javascript
egg.js的基本使用和调用数据库的方法示例
May 18 Javascript
javascript实现切割轮播效果
Nov 28 Javascript
vue下axios拦截器token刷新机制的实例代码
Jan 17 Javascript
jQuery实现雪花飘落效果
Aug 02 jQuery
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
JoshChen_php新手进阶高手不可或缺的规范介绍
2013/08/16 PHP
php中多维数组按指定value排序的实现代码
2014/08/19 PHP
jQuery 插件 将this下的div轮番显示
2009/04/09 Javascript
判断浏览器的javascript版本的代码
2010/09/03 Javascript
基于mootools插件实现遮罩层新手引导
2012/05/24 Javascript
使用js解决由border属性引起的div宽度问题
2013/11/26 Javascript
js判断某个方法是否存在实例代码
2015/01/10 Javascript
JS使用正则表达式除去字符串中重复字符的方法
2015/11/05 Javascript
Vue.js开发环境快速搭建教程
2017/03/17 Javascript
JS正则表达式验证中文字符
2017/05/08 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
2017/09/27 Javascript
Vue Element使用icon图标教程详解(第三方)
2018/02/07 Javascript
关于jquery layui弹出层的使用方法
2018/04/21 jQuery
JavaScript中创建原子的方法总结
2018/08/26 Javascript
详解在网页上通过JS实现文本的语音朗读
2019/03/28 Javascript
[07:20]2018DOTA2国际邀请赛寻真——逐梦Mineski
2018/08/10 DOTA
[53:03]Optic vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[48:37]EG vs OG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
使用Python编写Linux系统守护进程实例
2015/02/03 Python
pygame学习笔记(6):完成一个简单的游戏
2015/04/15 Python
Python实现简单的代理服务器
2015/07/25 Python
python操作mysql代码总结
2018/06/01 Python
深入理解Django自定义信号(signals)
2018/10/15 Python
python如何读取bin文件并下发串口
2019/07/05 Python
Django REST Framework序列化外键获取外键的值方法
2019/07/26 Python
django实现日志按日期分割
2020/05/21 Python
对python中list的五种查找方法说明
2020/07/13 Python
基于tensorflow __init__、build 和call的使用小结
2021/02/26 Python
超酷炫 CSS3垂直手风琴菜单
2016/06/28 HTML / CSS
HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
2016/12/14 HTML / CSS
C#可否对内存进行直接的操作
2015/02/26 面试题
优良学风班总结材料
2014/02/08 职场文书
服务承诺书格式
2014/05/21 职场文书
岗位安全生产责任书
2014/07/28 职场文书
2015暑假假期总结
2015/07/13 职场文书
css 中多种边框的实现小窍门
2021/04/07 HTML / CSS