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 相关文章推荐
一个用js实现控制台控件的代码
Sep 04 Javascript
心扬JS分页函数代码
Sep 10 Javascript
javascript算法学习(直接插入排序)
Apr 12 Javascript
jquery控制显示服务器生成的图片流
Aug 04 Javascript
jQuery实现仿腾讯视频列表分页效果的方法
Aug 07 Javascript
关于JS中的方法是否加括号的问题
Jul 27 Javascript
详谈$.data()的用法和作用
Feb 13 Javascript
vue.js学习之UI组件开发教程
Jul 03 Javascript
如何通过setTimeout理解JS运行机制详解
Mar 23 Javascript
Node.js开发之套接字(socket)编程入门示例
Nov 05 Javascript
JS JQuery获取data-*属性值方法解析
Sep 01 jQuery
Vue中用JSON实现刷新界面不影响倒计时
Oct 26 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
咖啡知识大全
2021/03/03 新手入门
Zend studio文件注释模板设置方法
2013/09/29 PHP
PHP7.0安装笔记整理
2015/08/28 PHP
jquery实现文本框鼠标右击无效以及不能输入的代码
2010/11/05 Javascript
jquery 读取页面load get post ajax 四种方式代码写法
2011/04/02 Javascript
浅析jQuery中常用的元素查找方法总结
2013/07/04 Javascript
将查询条件的input、select清空
2014/01/14 Javascript
JavaScript DSL 流畅接口(使用链式调用)实例
2015/03/15 Javascript
jQuery实现带有上下控制按钮的简单多行滚屏效果代码
2015/09/04 Javascript
详述JavaScript实现继承的几种方式(推荐)
2016/03/22 Javascript
ionic实现可滑动的tab选项卡切换效果
2020/04/15 Javascript
Jq通过td获取同行其它列td的方法
2016/10/05 Javascript
通过扫描二维码打开app的实现代码
2016/11/10 Javascript
JavaScript中清空数组的方法总结
2016/12/02 Javascript
a标签置灰不可点击的实现方法
2017/02/06 Javascript
Javascript实现页面滚动时导航智能定位
2017/05/06 Javascript
webpack-dev-server远程访问配置方法
2018/02/22 Javascript
vue.js实现数据库的JSON数据输出渲染到html页面功能示例
2019/08/03 Javascript
解决layui的input独占一行的问题
2019/09/10 Javascript
Vue实现 点击显示再点击隐藏效果(点击页面空白区域也隐藏效果)
2020/01/16 Javascript
[00:10]神之谴戒
2019/03/06 DOTA
[00:44]华丽开场!DOTA2勇士令状带来全新对阵画面
2019/05/15 DOTA
python使用rabbitmq实现网络爬虫示例
2014/02/20 Python
详解在Python的Django框架中创建模板库的方法
2015/07/20 Python
python 发送和接收ActiveMQ消息的实例
2019/01/30 Python
Python封装成可带参数的EXE安装包实例
2019/08/24 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
2019/10/11 Python
pytorch 修改预训练model实例
2020/01/18 Python
基于Pycharm加载多个项目过程图解
2020/01/19 Python
python十进制转二进制的详解
2020/02/07 Python
Python使用tkinter实现小时钟效果
2021/02/22 Python
法拉利英国精品店:Ferraris Boutique UK
2019/07/20 全球购物
中学教师实习自我鉴定
2013/09/28 职场文书
2016五四青年节活动总结范文
2016/04/06 职场文书
python中os.path.join()函数实例用法
2021/05/26 Python
小程序实现筛子抽奖
2021/05/26 Javascript