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读取XML文件数据并显示的实现代码
Dec 16 Javascript
js 内存释放问题
Apr 25 Javascript
jquery获取div宽度的实现思路与代码
Jan 13 Javascript
Jquery动态添加及删除页面节点元素示例代码
Jun 16 Javascript
javascript变量声明实例分析
Apr 25 Javascript
jquery实现select选择框内容左右移动代码分享
Nov 21 Javascript
javascript中Date对象的使用总结
Nov 21 Javascript
微信小程序 POST请求的实例详解
Sep 29 Javascript
requireJS模块化实现返回顶部功能的方法详解
Oct 16 Javascript
分析JavaScript数组操作难点
Dec 18 Javascript
Vue 使用formData方式向后台发送数据的实现
Apr 14 Javascript
解决vue+router路由跳转不起作用的一项原因
Jul 19 Javascript
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支持页面回退的两种方法[转]
2007/02/14 PHP
php中的观察者模式简单实例
2015/01/20 PHP
PHP模拟post提交数据方法汇总
2016/02/16 PHP
thinkphp中的多表关联查询的实例详解
2017/10/12 PHP
js判断undefined类型,undefined,null, 的区别详细解析
2013/12/16 Javascript
javascript HTML5文件上传FileReader API
2020/03/27 Javascript
浅谈MVC+EF easyui dataGrid 动态加载分页表格
2016/11/10 Javascript
three.js加载obj模型的实例代码
2017/11/10 Javascript
利用js实现前后台传送Json的示例代码
2018/03/29 Javascript
微信公众号H5支付接口调用方法
2019/01/10 Javascript
富文本编辑器vue2-editor实现全屏功能
2019/05/26 Javascript
Angular如何由模板生成DOM树的方法
2019/12/23 Javascript
在Echarts图中给坐标轴加一个标识线markLine
2020/07/20 Javascript
详解如何在Javascript中使用Object.freeze()
2020/10/18 Javascript
python调用新浪微博API项目实践
2014/07/28 Python
Python中正则表达式的用法实例汇总
2014/08/18 Python
Python正规则表达式学习指南
2016/08/02 Python
Python使用asyncio包处理并发详解
2017/09/09 Python
Python3.5 创建文件的简单实例
2018/04/26 Python
python 利用栈和队列模拟递归的过程
2018/05/29 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
2018/12/16 Python
python对于requests的封装方法详解
2019/01/03 Python
python 多线程串行和并行的实例
2019/02/22 Python
把vgg-face.mat权重迁移到pytorch模型示例
2019/12/27 Python
python3 使用traceback定位异常实例
2020/03/09 Python
Under Armour安德玛中国官网:美国高端运动科技品牌
2018/03/09 全球购物
新西兰领先的内衣店:Bendon Lingerie新西兰
2018/07/11 全球购物
在C中是否有模拟继承等面向对象程序设计特性的好方法
2012/05/22 面试题
别名指示符是什么
2012/10/08 面试题
小组名称和口号
2014/06/09 职场文书
环卫工人慰问信
2015/02/15 职场文书
奖学金个人总结
2015/03/04 职场文书
个人承诺书格式范文
2015/04/29 职场文书
当幸福来敲门观后感
2015/06/01 职场文书
2015年中秋节主持词
2015/07/30 职场文书
mysql5.7使用binlog 恢复数据的方法
2021/06/03 MySQL