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 相关文章推荐
prototype 的说明 js类
Sep 07 Javascript
基于prototype扩展的JavaScript常用函数库
Nov 30 Javascript
jQuery判断密码强度实现思路及代码
Apr 24 Javascript
js行号显示的文本框实现效果(兼容多种浏览器 )
Oct 23 Javascript
JS实现在状态栏显示打字效果完整实例
Nov 02 Javascript
JQuery datepicker 用法详解
Dec 25 Javascript
详解Angular 开发环境搭建
Jun 22 Javascript
Vue中之nextTick函数源码分析详解
Oct 17 Javascript
微信小程序制作表格的方法
Feb 14 Javascript
JS实现躲避粒子小游戏
Jun 18 Javascript
0基础学习前端开发的一些建议
Jul 14 Javascript
在vue中实现给每个页面顶部设置title
Jul 29 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
世界上第一台立体声收音机
2021/03/01 无线电
PHP网页游戏学习之Xnova(ogame)源码解读(三)
2014/06/23 PHP
五款PHP代码重构工具推荐
2014/10/14 PHP
Symfony2中被遗弃的getRequest()方法分析
2016/03/17 PHP
PHP flush 函数使用注意事项
2016/08/26 PHP
PHP 7.1新特性的汇总介绍
2016/12/16 PHP
php+ajax实现仿百度查询下拉内容功能示例
2017/10/20 PHP
DOM和XMLHttpRequest对象的属性和方法整理
2012/01/04 Javascript
JS延迟加载加快页面打开速度示例代码
2013/12/30 Javascript
innerHTML在IE中报错解决方案
2014/12/15 Javascript
jQuery中on()方法用法实例详解
2015/02/06 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
2015/12/01 Javascript
json格式数据的添加,删除及排序方法
2016/01/21 Javascript
关于Bootstrap弹出框无法调用问题的解决办法
2016/03/10 Javascript
angular 基于ng-messages的表单验证实例
2017/05/04 Javascript
JS实现动态给标签控件添加事件的方法示例
2017/05/13 Javascript
微信小程序实现图片预览功能
2018/01/31 Javascript
浅谈js获取ModelAndView值的问题
2018/03/28 Javascript
vue-baidu-map 进入页面自动定位的解决方案(推荐)
2018/04/28 Javascript
ndm:NPM的桌面GUI应用程序
2018/10/15 Javascript
vue-cli3搭建项目的详细步骤
2018/12/05 Javascript
JS中使用new Option()实现时间联动效果
2018/12/10 Javascript
vue中input的v-model清空操作
2019/09/06 Javascript
JavaScript判断浏览器版本的方法
2019/11/03 Javascript
[09:43]DOTA2每周TOP10 精彩击杀集锦vol.5
2014/06/25 DOTA
Python标准库之随机数 (math包、random包)介绍
2014/11/25 Python
Python中编写ORM框架的入门指引
2015/04/29 Python
Python实现八大排序算法
2016/08/13 Python
Python中的Socket 与 ScoketServer 通信及遇到问题解决方法
2019/04/01 Python
Python使用指定字符长度切分数据示例
2019/12/05 Python
python检查目录文件权限并修改目录文件权限的操作
2020/03/11 Python
医学生自我鉴定范文
2013/11/08 职场文书
作弊检讨书1000字
2014/02/01 职场文书
应聘销售主管的求职信
2014/04/26 职场文书
股东授权委托书范文
2014/09/13 职场文书
党校个人总结
2015/03/04 职场文书