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 相关文章推荐
jQuery阻止冒泡和HTML默认操作
Nov 17 Javascript
js实现两个值相加alert出来精确到指定位
Sep 25 Javascript
js简单实现让文本框内容逐个字的显示出来
Oct 22 Javascript
window.onload追加函数使用示例
Mar 03 Javascript
ajax+jQuery实现级联显示地址的方法
May 06 Javascript
JS实现当前页居中分页效果的方法
Jun 18 Javascript
JS组件Bootstrap实现弹出框效果代码
Apr 26 Javascript
jQuery实现的兼容性浮动层示例
Aug 02 Javascript
ajax图片上传,图片异步上传,更新实例
Dec 30 Javascript
layui自己添加图片按钮并点击跳转页面的例子
Sep 14 Javascript
vue 实现通过vuex 存储值 在不同界面使用
Nov 11 Javascript
用几道面试题来看JavaScript执行机制
Apr 30 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
哪吒敖丙传:新人物二哥敖乙出场 小敖丙奶气十足
2020/03/08 国漫
php巧获服务器端信息
2006/12/06 PHP
fleaphp rolesNameField bug解决方法
2011/04/23 PHP
初步介绍PHP扩展开发经验分享
2012/09/06 PHP
php常用数组函数实例小结
2016/12/29 PHP
PHP创建单例后台进程的方法示例
2017/05/23 PHP
关于php支持的协议与封装协议总结(推荐)
2017/11/17 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
PHP超全局变量实现原理及代码解析
2020/09/01 PHP
javascript静态的url如何传递
2007/05/03 Javascript
浅析document.createDocumentFragment()与js效率
2013/07/08 Javascript
对frameset、frame、iframe的js操作示例代码
2013/08/16 Javascript
jquery新的绑定事件机制on方法的使用方法
2014/04/15 Javascript
JS获取当前日期时间并定时刷新示例
2021/03/04 Javascript
js获取input长度并根据页面宽度设置其大小及居中对齐
2014/08/22 Javascript
AngularJS数据源的多种获取方式汇总
2016/02/02 Javascript
JavaScript简单实现弹出拖拽窗口(一)
2016/06/17 Javascript
fullpage.js全屏滚动插件使用实例
2016/09/06 Javascript
vue-router路由简单案例介绍
2017/02/21 Javascript
javascript 秒表计时器实现代码
2017/03/09 Javascript
CodeMirror js代码加亮使用总结
2017/03/25 Javascript
JavaScript实现打印星型金字塔功能实例分析
2017/09/27 Javascript
js实现单张图片平移切换效果
2017/10/11 Javascript
Vue中的字符串模板的使用
2018/05/17 Javascript
JS中call和apply函数用法实例分析
2018/06/20 Javascript
简单使用webpack打包文件的实现
2019/10/29 Javascript
vue实现两个组件之间数据共享和修改操作
2020/11/12 Javascript
[49:56]VG vs Optic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python实现读取邮箱中的邮件功能示例【含文本及附件】
2017/08/05 Python
python dataframe 输出结果整行显示的方法
2018/06/14 Python
详解Python中的正则表达式
2018/07/08 Python
python实现日志按天分割
2019/07/22 Python
员工考核评语大全
2014/04/26 职场文书
离婚财产分隔协议书
2014/10/23 职场文书
家长反馈意见及建议
2015/06/03 职场文书
详解Go语言中Get/Post请求测试
2022/06/01 Golang