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 相关文章推荐
jquery 简短几句代码实现给元素动态添加及获取提示信息
Sep 01 Javascript
JavaScript知识点总结(四)之逻辑OR运算符详解
May 31 Javascript
简单实现jQuery多选框功能
Jan 09 Javascript
微信小程序的分类页面制作
Jun 27 Javascript
AngularJS点击添加样式、点击变色设置的实例代码
Jul 27 Javascript
JS实现的按钮点击颜色切换功能示例
Oct 19 Javascript
JS使用setInterval实现的简单计时器功能示例
Apr 19 Javascript
使用微信小程序开发弹出框应用实例详解
Oct 18 Javascript
vue源码nextTick使用及原理解析
Aug 13 Javascript
微信小程序返回上一页传参并刷新过程解析
Dec 13 Javascript
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
May 14 Javascript
浅谈Vue的computed计算属性
Mar 21 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
第九节--绑定
2006/11/16 PHP
基于jquery的不规则矩形的排列实现代码
2012/04/16 Javascript
利用NodeJS的子进程(child_process)调用系统命令的方法分享
2013/06/05 NodeJs
javascript处理表单示例(javascript提交表单)
2014/04/28 Javascript
如何用javascript计算文本框还能输入多少个字符
2015/07/29 Javascript
JS实现超简洁网页title标题跑动闪烁提示效果代码
2015/10/23 Javascript
jQuery mobile转换url地址及获取url中目录部分的方法
2015/12/04 Javascript
JavaScript隐式类型转换
2016/03/15 Javascript
javaScript 逻辑运算符使用技巧整理
2017/05/03 Javascript
JavaScript脚本语言是什么_动力节点Java学院整理
2017/06/26 Javascript
lhgcalendar时间插件限制只能选择三个月的实现方法
2017/07/03 Javascript
微信小程序自定义多选事件的实现代码
2018/05/17 Javascript
详解JSON Web Token 入门教程
2018/07/30 Javascript
小程序组件之仿微信通讯录的实现代码
2018/09/12 Javascript
微信小程序实现同时上传多张图片
2020/02/03 Javascript
原生js实现的观察者和订阅者模式简单示例
2020/04/18 Javascript
vue中jsonp插件的使用方法示例
2020/09/10 Javascript
Java中重定向输出流实现用文件记录程序日志
2015/06/12 Python
Python实现批量读取word中表格信息的方法
2015/07/30 Python
python将unicode转为str的方法
2017/06/21 Python
python实现csv格式文件转为asc格式文件的方法
2018/03/23 Python
opencv改变imshow窗口大小,窗口位置的方法
2018/04/02 Python
python使用rsa非对称加密过程解析
2019/12/28 Python
Python Selenium截图功能实现代码
2020/04/26 Python
Python偏函数实现原理及应用
2020/11/20 Python
Pycharm 解决自动格式化冲突的设置操作
2021/01/15 Python
HTML5图片层叠的实现示例
2020/07/07 HTML / CSS
菲律宾购物网站:Lazada菲律宾
2018/04/05 全球购物
维多利亚的秘密阿联酋官网:Victoria’s Secret阿联酋
2019/12/07 全球购物
了解AppleTalk协议吗
2014/04/01 面试题
2015年乡镇科普工作总结
2015/05/13 职场文书
php 原生分页
2021/04/01 PHP
pytorch显存一直变大的解决方案
2021/04/08 Python
这样写python注释让代码更加的优雅
2021/06/02 Python
使用Python+OpenCV进行卡类型及16位卡号数字的OCR功能
2021/08/30 Python
Vue操作Storage本地化存储
2022/04/29 Vue.js