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 相关文章推荐
HTML DOM的nodeType值介绍
Mar 31 Javascript
javascript 中String.match()与RegExp.exec()的区别说明
Jan 10 Javascript
如何使用JS获取IE上传文件路径(IE7,8)
Jul 08 Javascript
js模拟点击以提交表单为例兼容主流浏览器
Nov 29 Javascript
js重写alert控件(适合学习js的新手朋友)
Aug 24 Javascript
AngularJS iframe跨域打开内容时报错误的解决办法
Jan 26 Javascript
js实现显示手机号码效果
Mar 09 Javascript
基于Vue的SPA动态修改页面title的方法(推荐)
Jan 02 Javascript
详解用Node.js写一个简单的命令行工具
Mar 01 Javascript
Postman模拟发送带token的请求方法
Mar 31 Javascript
node后端服务保活的实现
Nov 10 Javascript
前端JavaScript大管家 package.json
Nov 02 Javascript
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实现弹出消息提示框的两种方法
2013/12/17 PHP
PHP中使用curl伪造IP的简单方法
2015/08/07 PHP
PHP消息队列用法实例分析
2016/02/12 PHP
javascript实现的HashMap类代码
2014/06/27 Javascript
JavaScript通过join函数连接数组里所有元素的方法
2015/03/20 Javascript
JavaScript制作windows经典扫雷小游戏
2015/03/31 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
2016/01/22 Javascript
javascript拖拽应用实例(二)
2016/03/25 Javascript
解析微信JS-SDK配置授权,实现分享接口
2016/12/09 Javascript
深究AngularJS中$sce的使用
2017/06/12 Javascript
Vue2.0 axios前后端登陆拦截器(实例讲解)
2017/10/27 Javascript
zTree节点文字过多的处理方法
2017/11/24 Javascript
webpack4+express+mongodb+vue实现增删改查的示例
2018/11/08 Javascript
Vue事件修饰符native、self示例详解
2019/07/09 Javascript
使用kbone解决Vue项目同时支持小程序问题
2019/11/08 Javascript
JS typeof fn === 'function' &amp;&amp; fn()详解
2020/08/22 Javascript
Vue实现返回顶部按钮实例代码
2020/10/21 Javascript
JavaScript实现前端倒计时效果
2021/02/09 Javascript
Python操作MongoDB数据库PyMongo库使用方法
2015/04/27 Python
在Python中使用poplib模块收取邮件的教程
2015/04/29 Python
Python高级特性与几种函数的讲解
2019/03/08 Python
python批量修改文件夹及其子文件夹下的文件内容
2019/03/15 Python
在Python中COM口的调用方法
2019/07/03 Python
python处理大日志文件
2019/07/23 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
2020/02/21 Python
Python-jenkins 获取job构建信息方式
2020/05/12 Python
Python如何避免文件同名产生覆盖
2020/06/09 Python
Python下载网易云歌单歌曲的示例代码
2020/08/12 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
canvas绘制树形结构可视图形的实现
2020/04/03 HTML / CSS
Myprotein俄罗斯官网:欧洲第一运动营养品牌
2019/05/05 全球购物
弄虚作假心得体会
2014/09/10 职场文书
开展党的群众路线教育实践活动工作总结
2014/11/05 职场文书
奔腾年代观后感
2015/06/09 职场文书
JavaScript分页组件使用方法详解
2021/07/26 Javascript
vue使用echarts实现折线图
2022/03/21 Vue.js