树形结构下拉框组件vue-treeselect的使用(安装、模糊匹配、单选、多选、延迟加载、异步搜索等)

一、基本使用流程

  1. 首先npm安装依赖
npm install @riophae/vue-treeselect --save
  1. 然后在需要使用的组件中引入
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
  1. 声明组件
components: { Treeselect }
  1. 使用
 <treeselect:options="dataList"     //接受数组placeholder="请选择"v-model="value"
/>

二、示例代码

1. 示例一

<template><div><treeselect v-model="deptIds" :options="deptList" :multiple="true" :disable-branch-nodes="false":clear-on-select="true" :flat="true" :show-count="true" placeholder="请选择" /></div>
</template><script>import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";export default {components: {Treeselect},data() {return {deptList: [{id: 1,label: 'a',children: [{id: 4,label: 'aa',children: [{id: 6,label: 'aaa',}],}],},{id: 2,label: 'b',children: [{id: 5,label: 'bb',}],},{id: 3,label: 'c',children: [],},],deptIds: [],};},created() {},methods: {},
};
</script><style scoped></style>

2. 示例二

<!-- Vue SFC -->
<template><div id="app" :dir="rtl ? 'rtl' : 'ltr'"><!--  :auto-load-root-options="false" 装载时自动加载根选项。当设置为false时,将在打开菜单时加载根选项。 --><!-- :append-to-body="appendToBody" , 有时候下拉数据不显示,可以添加这个属性,然后配合下面的样式 vue-treeselect__placeholder ; vue-treeselect__menu-container --><treeselectv-model="value":options="options":normalizer="normalizer":multiple="multiple":append-to-body="appendToBody":flat="flat":show-count="showCount"placeholder="请选择":load-options="loadOptions":flatten-search-results="false"><!-- 自定义选项标签 --><!-- node -标准化的节点对象(请注意,这与您从normalizer() 返回的内容不同)count & shouldShowCount - 计数数字和布尔值指示是否应显示计数labelClassName & countClassName - CSS类名,用于使样式正确 --><labelslot="option-label"slot-scope="{node,shouldShowCount,count,labelClassName,countClassName,}":class="labelClassName">{{ node.isBranch ? "Branch" : "Leaf" }}: {{ node.label }}<span v-if="shouldShowCount" :class="countClassName">({{ count }})</span>{{ showNode(node) }}</label><!-- 自定义值标签 --><div slot="value-label" slot-scope="{ node }">{{ node.raw.name }}(自定义)</div></treeselect><el-button type="primary" @click="submit" style="margin-top: 20px">确认</el-button></div>
</template><script>
// 引入组件和样式
// import the component
import Treeselect from "@riophae/vue-treeselect";
// import the styles
import "@riophae/vue-treeselect/dist/vue-treeselect.css";// -------------------延迟加载相关-------------------------
import { LOAD_CHILDREN_OPTIONS } from "@riophae/vue-treeselect";
//我们只是在这里使用“setTimeout()”来模拟异步操作
//而不是为了演示目的而请求真正的API服务器。
const simulateAsyncOperation = (fn) => {setTimeout(fn, 2000);
};export default {// register the component 注册组件components: { Treeselect },name: "VueTreeselect",data() {return {// define the default value 默认绑定值value: null,// define options  默认选项列表options: [{key: "1",name: "测试1",subOptions: [{key: "1-1",name: "测试1-1",// 默认情况下是否应展开此文件夹选项。isDefaultExpanded: true,subOptions: [{key: "1-1-1",name: "测试1-1-1",// 用于为新节点赋予不同的颜色。isNew: true,},{key: "1-1-2",name: "测试1-1-2",},],},{key: "1-2",name: "测试1-2",},],},{key: "2",name: "测试2",subOptions: [{key: "2-1",name: "测试2-1",},{key: "2-2",name: "测试2-2",},],},{key: "3",name: "测试3",// Declare an unloaded branch node. 声明一个已卸载的分支节点subOptions: null,hasChildren: "success",},{key: "4",name: "测试4",// isDisabled: true在任何叶节点或分支节点上进行设置来禁用项目选择isDisabled: true,},{key: "5",name: "测试5",// Declare an unloaded branch node.subOptions: null,hasChildren: "no-children",},{key: "6",name: "测试6",// Declare an unloaded branch node.subOptions: null,hasChildren: "failure",},],// --------------------------------------属性配置------------------------------------------------------// 是否多选,默认falsemultiple: true,// 是否显示重置值的“×”按钮,默认trueclearable: true,// 是否启用搜索功能。默认truesearchable: true,// 是否禁用控制 (整体禁用)。默认falsedisabled: false,// 单击控件时是否自动打开菜单。默认trueopenOnClick: true,// 控件聚焦时是否自动打开菜单。 默认falseopenOnFocus: true,// 选择选项后是否清除搜索输入。仅在以下情况下使用:multiple=“true”。对于单选模式,无论道具值如何,它总是在选择后清除输入。clearOnSelect: true,// 选择一个选项后是否关闭菜单。仅在以下情况下使用:multiple=“true”。closeOnSelect: true,// 菜单是否应始终打开。alwaysOpen: false,// 将菜单附加到<body/>appendToBody: true,// 是否阻止选择分支节点disableBranchNodes: false,// 是否启用平面模式 (相当于父子节点分离)flat: true,// 是否在每个分支节点的标签旁边显示子计数showCount: true,// 控制文字显示,左对齐,还是右对齐rtl: false,// 限制所选选项的显示。其余部分将隐藏在limitText字符串中。limit: 10,// 默认展开几层DefaultExpandLevel: 0,// 巢状搜寻 该模式禁用了模糊匹配功能,以避免不匹配。searchNested: false,// 搜索时展平树  :flatten-search-results="true"flattenSearchResults: true,//防止价值组合// "ALL" - 选中的所有节点都将包含在 value 数组中// "BRANCH_PRIORITY"(默认)-如果选中了分支节点,则其所有后代将被排除在value 数组之外// "LEAF_PRIORITY" - 如果选中了分支节点,则此节点本身及其分支后代将从value阵列中排除,但其叶后代将包括在内// "ALL_WITH_INDETERMINATE" -选中的任何节点将包括在value 数组中,另外还有不确定的节点valueConsistsOf: "BRANCH_PRIORITY",// 平面模式和排序值 (选中的值的显示顺序)  :sort-value-by="sortValueBy"// "ORDER_SELECTED" (默认)-选择订单 (按照选中的顺序)// "LEVEL" - 选择级别: C 🡒 BB 🡒 AAA (根据层级排序)// "INDEX" - 选项索引: AAA 🡒 BB 🡒 C  (根据索引排序)sortValueBy: "ORDER_SELECTED",// 是否启用异步搜索模式  :async="true"async:false};},methods: {// 自定义键名:用于规范化源数据normalizer(node) {// console.log(node, "node");return {id: node.key,label: node.name,children: node.subOptions,};},// 查看一下node里面有那些属性showNode(node) {console.log(node, "node");},// 延迟加载// 通过设置声明一个卸载的分支节点children: null// 添加 loadOptions // 每当卸载的分支节点被扩展时,  loadOptions({ action, parentNode, callback, instanceId }) 都会被调用,// 然后您就可以执行从远程服务器请求数据的作业loadOptions({ action, parentNode, callback }) {console.log(action, "action");console.log(parentNode, "parentNode");console.log(callback, "callback");if (action === LOAD_CHILDREN_OPTIONS) {switch (parentNode.hasChildren) {case "success": {simulateAsyncOperation(() => {parentNode.subOptions = [{key: "child",name: "Child option",},];callback();});break;}case "no-children": {simulateAsyncOperation(() => {parentNode.subOptions = [];callback();});break;}case "failure": {simulateAsyncOperation(() => {callback(new Error("Failed to load options: network error."));});break;}default: /* empty */}}},// 查看选中的数据submit() {console.log(this.value, "查看选中的数据");},},
};
</script><style> 
/* 修改字体大小 */
.vue-treeselect__placeholder {color: #bdbdbd;font-size: 14px;
}/* 浮层内部样式 写在全局中 浮层被加入到了body里 */
.vue-treeselect__menu-container {font-size: 14px;color: #333;font-weight: 400;
}
</style>

三、效果图

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/635520.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安装布隆过滤器

上传并解压文件解压文件 tar -zxvf RedisBloom-2.2.4.tar.gz 进入解压好的文件 make一下 返回进入conf 配置文件 loadmodule /usr/local/etc/redis/redisbloom.so 粘入 拷贝redisbloom.so到容器 : docker cp redisbloom.so redis:/usr/local/etc/redis 重启redis : docker …

NX二次开发获取圆弧的四个象限点

我是用来用来画水路线框的UF_MODL_ask_curve_points&#xff08;&#xff09;可以按弧长或者弧度获取曲线的等分点&#xff0c;取PI/2的圆弧&#xff0c;即将圆弧四等分&#xff0c;你也可以取任意等分点。 int GetArcPoint(tag_t arc_tag,double point[4][3]) {if(arc_tag0)r…

Ubuntu 20.04安装yum报错:E: Unable to locate package yum

直接上解决方案&#xff01; 1、选择自己对应的版本的源地址 注意需要选择跟系统版本一致的&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ 找到Ubuntu点击小问号&#xff0c;进去选择对应的版本&#xff0c;将下面的镜像复制到Linux系统的 /etc/apt/sourc…

vue2 使用pdf.js 实现pdf预览,并可复制文本

需求&#xff1a;pdf预览&#xff0c;并且可以选中pdf的内容进行复制。 在ruoyi的vue前端项目中用到&#xff0c;参考了网上不少文章&#xff0c;因为大部分没给具体的pdf.js版本&#xff0c;导致运行过程中报各种api 错误&#xff0c;经过尝试以下版本可用&#xff0c…

ARM多核调度器DSU

1. 背景 从A75开始&#xff0c;ARM提出了一个新的多核心管理系统单元&#xff0c;叫做DSU(DynamIQ Shared Unit)。DSU的核心功能是控制CPU内核&#xff0c;使其成簇Cluster使用&#xff0c;簇内每一个核心可以单独开关、调整频率/电压&#xff0c;能效表现更佳&#xff0c;甚至…

Docker-Confluence部署记录

启动 docker container run -v $(pwd):/var/atlassian/application-data/confluence/ --nethost -d --nameconfluence_720_20240120 confluence/confluence:7.2.0新建mysql数据库 导入破解包 atlassian-agent 参考-Confluence 破解方式&#xff08;Linux&#xff09; 按流程破…

springcloud OpenFeign服务接口调用

文章目录 代码下载地址OpenFeign简介OpenFeign使用步骤测试 OpenFeign超时控制超时设置&#xff0c;故意设置超时演示出错情况服务提供方8001故意写暂停程序服务消费方80添加超时方法PaymentFeignService服务消费方80添加超时方法OrderFeignController测试YML文件里需要开启Ope…

区间问题笔记

1、k倍区间 #include <iostream> #include<cmath> #include<vector> #include<algorithm> #include<stack> using namespace std;long long sum[100005]; // 前缀和数组 int cnt[100005]; // 记录sum[i]除k得到的余数的个数 int ans;int…

操作系统实验报告

目录 目录 实验一 一、实验结果 实验二 使用信号量实现进程互斥与同步 一、实验结果 1. 使用信号量实现有限缓冲区的生产者和消费者问题 2. 使用信号量实现读进程具有优先权的读者和写者问题 实验三 死锁和预防 一、实验要求 二、实验内容 三、实验结果 实验四 内…

js中高德地图如何自身所在城市

直接上代码 <!doctype html> <html> <head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"initial-scale1.0, user-scalableno, wi…

Linux中的新建用户、切换用户

目录 一、Linux系统中有哪些用户 二、新建普通用户 三、root账号与普通账号的切换 一、Linux系统中有哪些用户 1.root 超级管理员&#xff08;不受权限约束&#xff09; 2.其他用户 普通用户&#xff08;受到权限约束&#xff09; 二、新建普通用户 创建新用户 sudo user…

如何删除Windows密码,看这篇文章就够了

删除Windows帐户的密码一点也不困难。删除密码后,当计算机启动时,你就不再需要登录到Windows。 在你删除密码后,家里或办公室里的任何人都可以完全访问你电脑上的所有内容,所以这样做并不是一件非常注重安全的事情。 ​注意:如果你忘记了密码,那么你将无法使用下面的方…

Oracle 12CR2 RAC部署翻车,bug避坑经历

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

【AI】ChatGPT和文心一言那个更好用

大家好&#xff0c;我是全栈小5&#xff0c;欢迎阅读文章&#xff01; 此篇是【话题达人】序列文章&#xff0c;这一次的话题是《自然语言处理的发展》 文章将以博主的角度进行讲述&#xff0c;理解和水平有限&#xff0c;不足之处&#xff0c;望指正。 目录 背景自我介绍面试题…

git本地分支的合并

目录 第一章、本地分支的切换测试1.1&#xff09;切换之前的master分支下文件内容1.2&#xff09;切换到develop分支后修改文件1.3&#xff09;切回master分支出现报错&#xff1a;1.4&#xff09;报错分析 第二章、解决方式2.1&#xff09;方式1&#xff1a;commit2.2&#xf…

Spring Security的使用条件

Spring Security要求使用Java 8或更高版本的运行时环境。 由于Spring Security旨在以自包含的方式运行&#xff0c;因此您无需在Java运行时环境中放置任何特殊的配置文件。特别是&#xff0c;您无需配置特殊的Java认证和授权服务&#xff08;JAAS&#xff09;策略文件&#xf…

“盲盒+互联网”模式下的盲盒小程序带来了哪些机遇?

近几年&#xff0c;盲盒逐渐兴起&#xff0c;深受大众的喜爱。盲盒中拥有各类随机商品&#xff0c;包括玩偶手办等&#xff0c;让消费者无法自拨。盲盒拥有神秘感和不确定性&#xff0c;消费者在购买前并不知道盲盒中是什么商品&#xff0c;因此具有较大的惊喜感&#xff0c;能…

绑定class,条件渲染,列表过滤,列表排序

目录​​​​​​​ 绑定class 条件渲染 列表过滤 列表排序 绑定class <div class"normal" :class"mood" click"changename">111{{name}}</div><div class"normal" :class"arr">111{{name}}</div…

mysql第五次作业

一、 学生表&#xff1a;Student (Sno, Sname, Ssex , Sage, Sdept) 学号&#xff0c;姓名&#xff0c;性别&#xff0c;年龄&#xff0c;所在系 Sno为主键 课程表&#xff1a;Course (Cno, Cname,) 课程号&#xff0c;课程名 Cno为主键 学生选课表&#xff1a;SC (Sno, Cno, …

node.js(expree.js )模拟手机验证码功能及登录功能

dbconfig.js const mysql require(mysql) module.exports {// 数据库配置config: {host: localhost, // 连接地址port: 3306, //端口号user: root, //用户名password: wei630229, //密码database: exapp2, //数据库名}, // 连接数据库&#xff0c;使用mysql的连接池连接方式…