vue Treeselect下拉树只能选择第N级元素实现代码


Posted in Javascript onAugust 31, 2020

今天在项目中遇到一个需求,就是vue下拉树只能选择第三级选项,为了解决这个问题,查阅了官方文档

https://vue-treeselect.js.org/#disable-item-selection

vue Treeselect下拉树只能选择第N级元素实现代码

然后看到isDisabled属性可以禁止选择,具体实现代码如下:

<treeselect 
  :disable-branch-nodes="true"
  :normalizer="normalizer" 
  v-model="formData.goodsTypeId" 
  :multiple="false" 
  :options="goodsType" 
  placeholder='请选择'>
  <label slot="option-label" slot-scope="{ node, shouldShowCount, count, labelClassName, 
   countClassName }">
     {{ node.label }}
  </label>
</treeselect>

如何给数据添加isDisabled属性呢?

自己尝试着在下拉树配置中添加了一下,竟然成功了

【提示】node这个对象包含的字段打印了一下,(这些数据是后台接口提供的)如下图展示:

vue Treeselect下拉树只能选择第N级元素实现代码

【isLeaf】Y是叶子节点,N是分支节点【typeLevel】第?级

normalizer(node) {
  //去掉children=[]的children属性
  if(node.children && !node.children.length) {
   delete node.children;
  }
  if(node.isLeaf=='Y' && node.typeLevel!=3){
   node['isDisabled'] = true;
  }
  return {
   id: node.typeId,
   label: node.typeName,
   children: node.children,
  }       
},

vue Treeselect下拉树只能选择第N级元素实现代码

补充知识:Vue ElementUI使用el-tree,只容许叶子结点有多选框

在使用el-tree时,我们需要多选功能会在el-tree标签添加show-checkbox属性:

vue Treeselect下拉树只能选择第N级元素实现代码

那么,有时会遇到这样的需求,父节点不让多选,只容许多选叶子结点。那么,这时我们改怎么做呢?

通过调试工具:

vue Treeselect下拉树只能选择第N级元素实现代码

多选框就是.el-checkbox这个样式,那么我们只需把这个样式覆盖一下,把它隐藏掉:

/deep/ .el-tree-node{
   .is-leaf + .el-checkbox .el-checkbox__inner{
     display: inline-block;
   }
   .el-checkbox .el-checkbox__inner{
     display: none;
   }
 }

注意:/deep/ 是强穿透,也可以写成<<< ,只在当前组件文件起作用,不改变整个页面样式。

最后别忘了在el-tree组件加上 :check-strictly="true" 是否严格的遵循父子不互相关联的做法

以上这篇vue Treeselect下拉树只能选择第N级元素实现代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
XHTML-Strict 内允许出现的标签
Dec 11 Javascript
用jQuery实现检测浏览器及版本的脚本代码
Jan 22 Javascript
JavaScript中document对象使用详解
Jan 06 Javascript
流量统计器如何鉴别C#:WebBrowser中伪造referer
Jan 07 Javascript
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 Javascript
自动适应iframe右边的高度
Dec 22 Javascript
vue.js利用defineProperty实现数据的双向绑定
Apr 28 Javascript
微信小程序实现图片预览功能
Jan 31 Javascript
angular5 httpclient的示例实战
Mar 12 Javascript
浅谈Vue路由快照实现思路及其问题
Jun 07 Javascript
vue+mousemove实现鼠标拖动功能(拖动过快失效问题解决方法)
Aug 24 Javascript
jQuery实现动态操作table行
Nov 23 jQuery
vue treeselect获取当前选中项的label实例
Aug 31 #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
You might like
php 在线打包_支持子目录
2008/06/28 PHP
PHP网站备份程序代码分享
2011/06/10 PHP
ThinkPHP CURD方法之field方法详解
2014/06/18 PHP
php实现给一张图片加上水印效果
2016/01/02 PHP
php实现将HTML页面转换成word并且保存的方法
2016/10/14 PHP
php上传excel表格并获取数据
2017/04/27 PHP
PHP7如何开启Opcode打造强悍性能详解
2018/05/11 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
2019/08/14 PHP
用JQuery 实现AJAX加载XML并解析的脚本
2009/07/25 Javascript
提升你网站水平的jQuery插件集合推荐
2011/04/19 Javascript
js 弹出虚拟键盘修改密码的简单实例
2016/10/10 Javascript
Vue自定义指令介绍(2)
2016/12/08 Javascript
jQuery实现动态添加tr到table的方法
2016/12/26 Javascript
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
2019/12/06 Javascript
Vue 3.0 全家桶抢先体验
2020/04/28 Javascript
python迭代器的使用方法实例
2013/11/21 Python
linux系统使用python监测网络接口获取网络的输入输出
2014/01/15 Python
python中while循环语句用法简单实例
2015/05/07 Python
详解python里使用正则表达式的全匹配功能
2017/10/19 Python
Python3.6安装及引入Requests库的实现方法
2018/01/24 Python
Python 单元测试(unittest)的使用小结
2018/11/14 Python
Python API自动化框架总结
2019/11/12 Python
Python如何使用内置库matplotlib绘制折线图
2020/02/24 Python
python实现在线翻译功能
2020/03/03 Python
python3中datetime库,time库以及pandas中的时间函数区别与详解
2020/04/16 Python
django orm模块中的 is_delete用法
2020/05/20 Python
python 实现数据库中数据添加、查询与更新的示例代码
2020/12/07 Python
python Timer 类使用介绍
2020/12/28 Python
python画图时设置分辨率和画布大小的实现(plt.figure())
2021/01/08 Python
Lowe’s加拿大:家居装修、翻新和五金店
2019/12/06 全球购物
美国专业消费电子及摄影器材网站:B&H Photo Video
2019/12/18 全球购物
介绍一下JNDI的基本概念
2013/07/26 面试题
学校课外活动总结
2014/05/08 职场文书
融资合作协议书范本
2014/10/17 职场文书
环保证明
2015/06/23 职场文书
公司人事管理制度
2015/08/05 职场文书