当前位置: 首页 > news >正文

iview自定义下拉树菜单

最近由于项目需要,封装了第二种下拉树,带checkBox并且可以支持快速选择的下拉树。样式如下


自定义下拉树菜单.png

所实现交互功能如下:
1.点击对应的层级按钮,自动勾选出对应的所有同级节点。
2.点击自定义,清空所有勾选的节点。
3.勾选中不同层级的节点或同层级节点并没有全部选中,自动切换到自定义节点,并保存之前勾选的节点不清空。
4.在自定义中,若勾选的节点是同一个层级且此层级节点全部被选中,自动切换到对应层级按钮。

下面开始贴代码( 由于我将这种下拉树和之前普通的下拉树 是封装到同一个组件中的,所以只贴跟这次关联度较高的代码,之前的线性数组递归成树不再重复展示)

<RadioGroup v-model="radioValue" v-if="showCheckBox" @on-change="selectedRadioHandle"><Radiostyle="margin-left: 10px":label="item.value"v-for="item in radioArray":key="item.value">{{item.label}}</Radio>
</RadioGroup>
<Treeref="tree":data="suitableTreeData"@on-check-change="handleCheckedChange"check-strictlycheck-directlyshow-checkboxv-if="showCheckBox"></Tree><Button style="margin-left: 300px;" v-if="showCheckBox" @click="handleSubmit" type="primary" ghost>确定</Button><Button v-if="showCheckBox" type="primary" ghost style="margin-left: 8px" @click="cancel">取消</Button>

首先讲解tree组件上面的参数:
1.check-strictly在iview的api中是“在显示复选框的情况下,是否严格的遵循父子不互相关联的做法”,简单的说就是父子节点不关联。
2.check-directly在iview的api中是"开启后,在 show-checkbox 模式下,select 的交互也将转为 check"。
3.show-checkbox是支持多选。

接下来就是实现上面交互所需要的逻辑和代码
1.要实现第一个”点击对应的层级按钮,自动勾选出对应得所有同级节点“这个比较简单。将radioGroup里面的按钮value值根据节点层级设为对应的2,3,4,5,0。0代表自定义节点,用v-model双向绑定一个radioValue值,当点击radio按钮时将此变量作为参数传入一个找出所有同层级节点方法中。方法代码如下:

 findLevelNode(tree, nodeLevel) {//找出某层级所有节点const _this = this;// console.log("nodeLevel",nodeLevel);tree.forEach(item => {if (item.level == nodeLevel) {_this.checkedNodeArr.push(item);} else {if (item.children) {_this.findLevelNode(item.children, nodeLevel);}else { return}}});_this.checkedNodeArr = _this.checkedNodeArr.filter(item => {//这里用filter是因为递归出来的数组中会存放上一次选择的所有节点,所以过滤出当前层级的节点if (item.level == nodeLevel) {return item}});return _this.checkedNodeArr;},

2.实现第二个“点击自定义,清空所有勾选的节点”的交互也比较简单,也是用上面的方法,当选择自定义的时候,会返回一个空数组,所以不再赘述。
3.第三个需求中“勾选中不同层级的节点或同层级节点并没有全部选中,自动切换到自定义按钮,并保存之前勾选的节点不清空”。
  这个交互分为两个步骤,第一个是“勾选中不同层级的节点或同层级节点并没有全部选中,自动切换到自定义节点”。要实现这个效果,首先要获取到所勾选的节点,并判断勾选的节点是否全部属于同一个层级,如果不是切换到自定义( 获取勾选的节点可以用this.$refs.tree.getCheckedNodes()来实现 )。然后要判断当前选中层级的所有节点中有没有checked属性为false的( 这里也是用上面的findLevelNode方法来实现 )。上面两个判断我都是用ES6的every()方法来实现

let checkedArr = _this.$refs.tree.getCheckedNodes();let isChecked = checkedArr.every(item => {//选中的checkBox的层级不一致切换到自定义return item.level == _this.radioValue;});let checkArr = _this.findLevelNode( _this.suitableTreeData,_this.radioValue);let isChecked2 = checkArr.every(item => {//如果有一个同层级级节点checked为false切换到自定义return item.checked == true;});if (!isChecked || !isChecked2) {_this.radioValue = "0";_this.checkedNodesId = checkedArr.map(i => {//保存自动切换自定义时所勾选节点的idreturn i.id;});}

  由于之前设定的点击自定义按钮会清空所选节点,而要实现“切换到自定义按钮,并保存之前的勾选的节点不清空”这个逻辑,跟之前有点相冲突,所以比前两个交互难一点。这里需要在data里创建一个数组用来保存自动切换到自定义时所勾选的节点id,实现就是上面代码中checkedNodesId数组。然后在之前的getTree方法中添加一个判断

          if (_this.radioValue == "0") {//解决勾选不同层级的复选框后,切换自定义按钮时,已勾选复选框取消选中的问题_this.checkedNodesId.forEach(d => {obj.id == d ? (obj.checked = true) : obj.checked;});} else {if (obj.level == _this.radioValue) {obj.checked = true;}}

  这样在勾选不同层级或取消同层级的一个节点自动切回自定义时,也会保存上一次勾选的值。不过这样也造成了一个bug,那就时从其他radio按钮直接点回自定义按钮时,也会保存上一次的所选择的按钮,并没有清空。要解决这个bug就需在RadioGroup 的事件函数中添加一个判断,当value为0时,将checkedNodesId这个数组清空,就能解决。

4.实现“在自定义中,若勾选的节点是同一个层级且此层级节点全部被选中,自动切换到对应层级按钮。”要实现这个交互,首先也要获取所有勾选的节点( 也是用this.$refs.tree.getCheckedNodes()来实现 ),然后再将这些节点分级,我们可以将使用getCheckedNodes方法获取的节点打印出来看看

log.png

这里我分级采用的方法使用reduce将数组分级,代码如下:

groupByArray(objArr, porperty) {//根据属性值将对象数组分类return objArr.reduce((acc, obj) => {let key = obj[porperty];if (!acc[key]) {acc[key] = [];}acc[key].push(obj);return acc;}, {});}

如果对reduce不太熟悉可以去mdn上看看。然后在Tree组件的on-check-change事件方法中调用,代码如下:

handleCheckedChange() {const _this = this;let checkedArr = _this.$refs.tree.getCheckedNodes();let isChecked = checkedArr.every(item => {//选中的checkBox的层级不一致切换到自定义return item.level == _this.radioValue;});let checkArr = _this.findLevelNode( _this.suitableTreeData,_this.radioValue);let isChecked2 = checkArr.every(item => {//如果有一个同层级级节点checked为false切换到自定义return item.checked == true;});if (!isChecked || !isChecked2) {_this.radioValue = "0";_this.checkedNodesId = checkedArr.map(i => {return i.id;});}//上面是之前的对第三个交互的判断//******************************************************************************************************************let finalCheckedArr = _this.groupByArray(checkedArr, "level"); //分级后的数组let currentLevel = null; //当前勾选的层级//如果只勾选了一个层级的节点,判断这个层级的节点是否全部勾选,如果是切换到对应的业务组,如果不是切换到自定义if (Object.keys(finalCheckedArr).length < 2) {currentLevel = Object.keys(finalCheckedArr)[0];let currentLevelArr = _this.findLevelNode(_this.suitableTreeData, currentLevel).map(i => i.id);let currentCheckedLevelArr =  Object.values(finalCheckedArr)[0].map(i => i.id);//isEqual()是lodash的方法,用来判断对象或数组是否相等isEqual(currentCheckedLevelArr, currentLevelArr)? (_this.radioValue = currentLevel.toString()): _this.radioValue;}// console.log("finalCheckedArr", this.$ps(finalCheckedArr));// console.log("checkedArr", this.$ps(checkedArr));},

以上就是实现此种下拉树交互的主要代码



喜欢的朋友记得点赞、收藏、关注哦!!!

相关文章:

iview自定义下拉树菜单

最近由于项目需要&#xff0c;封装了第二种下拉树&#xff0c;带checkBox并且可以支持快速选择的下拉树。样式如下 自定义下拉树菜单.png 所实现交互功能如下&#xff1a; 1.点击对应的层级按钮&#xff0c;自动勾选出对应的所有同级节点。 2.点击自定义&#xff0c;清空所有勾…...

Dubbo(94)如何在金融系统中应用Dubbo?

在金融系统中应用Dubbo&#xff0c;可以通过以下步骤实现&#xff1a; 项目结构设计&#xff1a;规划项目的模块结构&#xff0c;通常包括服务接口模块、各个服务提供者模块&#xff08;如账户服务、交易服务、风控服务等&#xff09;、服务消费者模块&#xff08;如前端应用、…...

Linux:web服务

一、nginx的安装及启用 1、为主机配置IP和搭建软件仓库 &#xff08;1&#xff09;IP的配置 &#xff08;2&#xff09;搭建软件仓库 2、 web服务的安装与启用 &#xff08;1&#xff09;nginx的端口 更改nginx端口号 效果 &#xff08;2&#xff09; 默认发布目录 修改默认发…...

process terminated with status -1073741515

使用CodeBlocks25.03编译wxWidgets3.2.8程序时提示process terminated with status -1073741515 后来自己重新编译生成了一下wxWidgets3.2.8源码&#xff0c;问题得以解决。...

2025信息安全网络安全意识培训资料汇编(24份)

最新整理&#xff1a;2025信息安全网络安全意识培训资料汇编&#xff0c;共24份资料&#xff0c;供学习参考。 互联网信息安全意识培训.pptx100个网络安全风险防范知识.pptx亚信信息安全意识培训.pptx网络安全法规及意识培训.pptx网络安全意识与案例分析.pptx绿盟-安全意识培训…...

线程概念与控制

Linux线程概念 什么是线程 在一个程序里的一个执行路线就叫做线程&#xff08;thread&#xff09;。更准确的定义是&#xff1a;线程是“一个进程内部 的控制序列”&#xff0c;一切进程至少都有一个执行线程&#xff0c;线程在进程内部运行&#xff0c;本质是在进程地址空间内…...

【SpringAI+阿里云百炼】AI对话4个Demo

基于SpringAI和阿里云百炼平台&#xff0c;实现了四个AI对话的小Demo 小团团对话机器人哄哄模拟器培训班智能客服仿ChatPDF 笔记如下:语雀知识笔记《SpringAI》...

Redis-----认识NoSQL

文章目录 前言一、SQL的结构化与NoSQL非结构化1.SQL2.NoSQL 二、关系型数据库SQL与非关系型数据库NoSQL1.SQL2.NoSQL 三、SQL查询与NoSQL查询1.SQL2.NoSQL 四、事务的区别1.SQL2.NoSQL 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 提示&#xff…...

驱动开发硬核特训 · Day 27(下篇):深入掌握 Common Clock Framework 架构与实战开发

节。 在本篇内容中&#xff0c;我们将围绕 Linux 内核中的时钟子系统核心架构 —— Common Clock Framework&#xff08;简称 CCF&#xff09;展开深入讲解&#xff0c;目标是帮助你全面理解其设计理念、主要数据结构、注册流程、驱动实现方式&#xff0c;以及如何基于 NXP i.M…...

Qt基础知识记录(终篇)

写在前面 博主的项目所需知识已经差不多学完了&#xff0c;后续如果还需要再学习那就继续学&#xff0c;毕竟程序员就是摸着石头过河的&#xff0c;碰壁乃是常有的事情。博主的项目服务器是用MySQL存储数据的&#xff0c;所以博主学习一下Qt如何连接MySQL及从MySQL中存取数据 博…...

LeetCode刷题链表

文章目录 链表总结 常用技巧两数相加题解代码 两两交换链表中的节点题解代码 重排链表题解代码 合并k个升序链表题解代码 K个一组翻转链表题解代码 链表总结 常用技巧 画图 直观 形象 便于理解引入虚拟头节点&#xff0c;便于处理边界情况&#xff0c;方便我们对链表进行…...

transfomer网络构建

目录 整体架构 详细模块分析 Transformer 算法的演进 代码讲解 1. 导入必要的库 2. InputEmbeddings 类 3. PositionalEncoding 类 4. LayerNormalization 类 5. FeedForwardBlock 类 6. MultiHeadAttentionBlock 类 7. ResidualConnection 类 8. EncoderBlock 类 9. Encoder 类…...

【mathematica】常见命令

mathematica官方文档 下载安装 安装激活教程 基本用法 输入、画图、基本运算、方程组求解、公式导出、 笔记本新建&#xff1a; 文件-新建-笔记本 输入&#xff1a; 直接在界面输入定义的变量、式子或者方程组即可 输出&#xff08;计算&#xff09; ENTER : 换行ENTER SHIF…...

photoshop学习笔记2

第一章 第01节-界面的重要性(学习方法) 第02节-文件的打开新建及储存 第03节-移动工具(图层概念) 学习目标&#xff1a; 1.了解图层概念 2.认识工具属性 3.掌握工具使用 图层的概念 移动工具 移动工具就是用来移动图层内容的。是否可以用来移动组…...

从软件到硬件:三大主流架构的特点与优劣详解

常见的架构包括软件架构、企业架构、硬件架构等&#xff0c;以下是对这几种常见架构的分析&#xff1a; 一、软件架构 1.分层架构 描述&#xff1a;分层架构是一种经典的软件架构模式&#xff0c;将软件系统按照功能划分为不同的层次&#xff0c;一般包括表现层&#xff08;…...

网狐旗舰大联盟组件源码私测笔记:结构分层、UI重构与本地实操全流程

作为一套衍生于传统网狐架构的源码版本&#xff0c;大联盟这套源码组件可谓是在经典基础上进行了深度重塑。与老版死板的框架风格不同&#xff0c;它不仅对界面做了大刀阔斧的重构&#xff0c;还在组件层级的组织上做了优化。本文将基于一整套源码进行深度解析&#xff0c;强调…...

Oracle OCP认证考试考点详解083系列07

题记&#xff1a; 本系列主要讲解Oracle OCP认证考试考点&#xff08;题目&#xff09;&#xff0c;适用于19C/21C,跟着学OCP考试必过。 31. 第31题&#xff1a; 题目 解析及答案&#xff1a; 从 Oracle 19c 开始&#xff0c;数据库配置助手&#xff08;DBCA&#xff09;在克…...

Qt .pro配置msvc相关命令(二)

目录 1. 指定编译器版本 2. 设置编译器选项 3. 设置链接器选项 4. 定义预处理器宏 5. 指定包含目录和库目录 6. 配置生成目标 7. 配置调试和发布模式 8. 指定生成文件的目录 9. 使用特定的 MSVC 功能 10. 条件编译 在 Qt 中&#xff0c;.pro 文件是项目配置文件&…...

Debezium Binlog解析与事件转换流程详解

Debezium Binlog解析与事件转换流程详解 1. Binlog解析整体流程 #mermaid-svg-2ghVgmGOnV4elpya {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-2ghVgmGOnV4elpya .error-icon{fill:#552222;}#mermaid-svg-2ghVgmG…...

SpringBoot接口防抖(防重复提交)

目录 一.流程分析&#xff1a; 二.案例代码详解&#xff1a; 前提条件&#xff1a; 1.自定义注解&#xff1a; 2.编写异常类&#xff1a; 3.创建key生成器&#xff1a; 4.自定义AOP切面&#xff1a; 5.Controller&#xff1a; 三.Redission分布式解决方案&#xff1a;…...

HTML02:网页基本信息

网页的基本信息 DOCTYPE声明 < title 标签 < meat 标签 <!-- DOCTYPE:告诉浏览器&#xff0c;我们要使用什么规格 --> <!DOCTYPE html> <!-- head标签代表网页头部 --> <html lang"en"> <head><!-- meta描述性标签&#…...

uniswap v4 hooks标志位

hooks的代码位置在这&#xff0c;它是是组织校验&#xff0c;调用用户创建钩子的类库。 首先看其中定义的常量&#xff1a; uint160 internal constant ALL_HOOK_MASK uint160((1 << 14) - 1);uint160 internal constant BEFORE_INITIALIZE_FLAG 1 << 13;uint16…...

YOLOv7细节解读

RepVGG 推理加速 背景与动机&#xff1a;在模型的骨干网络&#xff08;backbone&#xff09;优化中&#xff0c;VGG 因结构简单&#xff0c;在显存利用上有优势&#xff08;单一路径&#xff0c;仅需一倍显存&#xff09;&#xff0c;但被多分支结构的 ResNet 超越。然而&#…...

nt!MiSessionAddProcess函数分析和nt!MmSessionSpace全局变量的关系

第一部分&#xff1a; 1: kd> g Breakpoint 42 hit nt!MiSessionAddProcess: 80ab2fbe 55 push ebp 1: kd> kc # 00 nt!MiSessionAddProcess 01 nt!MmCreateProcessAddressSpace 02 nt!PspCreateProcess 03 nt!NtCreateProcessEx 04 nt!_KiSystemServic…...

情绪ABC——AI与思维模型【93】

一、定义 情绪ABC思维模型是一种心理学上的理论&#xff0c;它认为人们的情绪和行为反应&#xff08;C&#xff0c;Consequence&#xff09;并非直接由激发事件&#xff08;A&#xff0c;Activating event&#xff09;引起&#xff0c;而是由个体对激发事件的认知和评价所产生…...

基于k8s系统的API网关-kong网关

1. 为什么需要 API 网关 API网关是一个服务器&#xff0c;是系统的唯一入口。API网关封装了系统内部架构&#xff0c;为每个客户端提供一个定制的API。它可能还具有其它职责&#xff0c;如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理。API网关方式的核心要点…...

8.2 GitHub企业级PDF报告生成实战:ReportLab高级技巧与性能优化全解析

GitHub企业级PDF报告生成实战:ReportLab高级技巧与性能优化全解析 GitHub Sentinel 高级功能实现:PDF 报告生成技术详解 关键词:PDF 报告生成, ReportLab 实战, 结构化数据转换, 容器化字体配置, 企业级报告模板 1. 需求分析与技术选型 PDF 报告生成需要满足以下技术要求…...

一周学会Pandas2 Python数据处理与分析-Pandas2复杂数据查询操作

锋哥原创的Pandas2 Python数据处理与分析 视频教程&#xff1a; 2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 前面我们学了.loc[]等几个简单的数据筛选操作&#xff0c;但实际业务需求往 往需要按照一定的条件甚至复杂的组合条件…...

四年级数学知识边界总结思考-下册

目录 一、背景二、过程1.四则运算小学四年级课本下册《四则运算》知识点、由来、作用与意义解析**一、核心知识点****二、历史由来****三、作用与意义****四、总结** 2.运算律小学四年级课本下《运算律》知识点、由来、作用与意义解析**一、核心知识点****二、历史由来****三、…...

Git从入门到精通-第四章-更新仓库

目录 检查当前文件状态 追踪新文件 暂存已修改的文件&#xff08;git add作用总结&#xff09; 简化输出状态 忽略文件 查看已暂存和未暂存的修改 git diff 提交更新 git commit 跳过使用暂存区 前言&#xff1a;在工作区和Git仓库间设置暂存区的意义 1. ​精准控制…...

RPG8.增加武器

1.创建一个Actor的c类 2.创建武器WeaponBase的子类&#xff0c;给玩家的武器 3.进入WeaponBase&#xff0c;只留下构造函数&#xff0c;并且将bCanEventTick改为false&#xff0c;增加组件。 #pragma once#include "CoreMinimal.h" #include "GameFramework/Ac…...

力扣1128题解

记录 2525.5.4 题目&#xff1a; 思路&#xff1a; 先将dominoes[i]的二元全部变为前大后小的形式&#xff0c;再遍历该数组&#xff0c;用数组来记录。 代码&#xff1a; class Solution {public int numEquivDominoPairs(int[][] dominoes) {int [] [] cnt new int [10…...

微服务框架选型

1 Thrift&#xff0c; gRPC&#xff0c; Dubbo&#xff0c;Spring Cloud性能对比 指标ThriftgRPCDubboSpring Cloud序列化速度最快 (Binary)快 (Protobuf)中等 (Hessian2)慢 (JSON/XML)网络吞吐量最高 (无HTTP开销)高 (HTTP/2)中等 (TCP)低 (HTTP/1.1)延迟<1ms1-3ms2-5ms10…...

DeepSeek-Prover-V2模型原理速览

文章目录 prerequisite&#xff1a;Lean4研究亮点通过子目标分解实现递归证明搜索基于子目标的定理证明中的课程学习 统一非形式化推理和形式化证明通过合成数据实现冷启动以推理为导向的强化学习 DeepSeek-Prover-V2 的训练细节专家迭代监督式微调 快速使用REF DeepSeek-Prove…...

网络编程,使用select()进行简单服务端与客户端通信

这里在Ubuntu环境下演示 一般流程 服务端常用函数&#xff1a; socket()&#xff1a;创建一个新的套接字。bind()&#xff1a;将套接字与特定的IP地址和端口绑定。listen()&#xff1a;使套接字开始监听传入的连接请求。accept()&#xff1a;接受一个传入的连接请求&#xff…...

QT数据库实验

一、实验目的和要求 1、掌握Qt中掌握绘图工具和图形界面设计&#xff1b;绘制常见的图形。 2、熟悉Qt界面设计中常用的控件。 3、了解滚动条、滑动条、进度条、旋转按钮控件的用法。 二、实验内容 1、设计一个绘图软件&#xff0c;完成图像的绘制操作。 2、建立按钮的信号…...

【PyTorch完全指南】从深度学习原理到工业级实践

目录 🌟 前言技术背景与价值当前技术痛点解决方案概述目标读者说明🔍 一、技术原理剖析核心概念图解核心作用讲解关键技术模块技术选型对比🛠 二、实战演示环境配置要求核心代码实现1. 基础Tensor操作2. 神经网络构建3. 训练循环实现运行结果验证⚡ 三、性能对比测试方法…...

Spring AI 实战:第七章、Spring AI Advisor机制之记忆大师

引言:当AI的记性比金鱼还差 你:我叫张三,很高兴认识你AI:很高兴认识你,张三! 如果你有任何问题或者需要帮助,请随时告诉我你:我叫什么AI:抱歉,我无法知道你的名字。不过你可以告诉我一些关于你的信息,如果你愿意分享的话!AI的内心OS:爱谁谁,我反正不知道 如上图所…...

工业AI质检:从传统算法到多模态大模型应用

工业AI质检:从传统算法到多模态大模型应用 引言 在制造业质量控制领域,传统人工检测的漏检率高达15%-20%,而基于规则算法的视觉检测系统仅能处理已知缺陷类型。随着多模态大模型技术的突破,工业质检正进入"认知智能"新阶段——系统不仅能识别缺陷,更能理解工艺…...

STM32智能垃圾桶:四种控制模式实战开发

简介 从零到一打造企业级智能垃圾桶系统,实现按键、语音、红外、蓝牙多模式控制。本项目采用STM32F103C8T6作为主控芯片,通过模块化设计整合多种控制方式,确保系统稳定、高效且易于维护。文章将提供完整硬件连接方案、代码实现细节及企业级开发技术,帮助开发者掌握智能垃圾…...

Python语句入门:从基础到实践

Python作为一门简洁优雅的编程语言&#xff0c;其语句结构清晰易懂&#xff0c;非常适合初学者学习。本文将全面介绍Python中的各种基本语句&#xff0c;帮助编程新手快速掌握Python编程基础。语句是计算机执行程序的最小单位。 一、Python语句概述 Python程序由一系列语句组…...

Kubernetes(k8s)学习笔记(五)--部署Ingress实现域名访问和负载均衡

Ingress是基于nginx&#xff0c;通过在k8s中部署ingress&#xff0c;可实现域名访问和pod节点间的负载均衡。 下面是实现过程&#xff1a; 一.准备一个ingress-controller.yaml文件 apiVersion: v1 kind: Namespace metadata:name: ingress-nginxlabels:app.kubernetes.io/n…...

数据库MySQL学习——day8(复习与巩固基础知识)

文章目录 1. 数据库基础概念复习2. 常用SQL命令复习2.1 SELECT 查询数据2.2 INSERT 插入数据2.3 UPDATE 更新数据2.4 DELETE 删除数据 3. 表操作复习3.1 创建表3.2 修改表3.3 删除表 4. 实践任务4.1 创建样例数据库和表4.2 插入和更新数据4.3 使用WHERE、ORDER BY、LIMIT进行查…...

【ArcGIS微课1000例】0144:沿线或多边形要素添加折点,将曲线线段(贝塞尔、圆弧和椭圆弧)替换为线段。

文章目录 增密工具介绍举例1. 圆2. 椭圆3. 折线增密工具介绍 沿线或多边形要素添加折点。还可将曲线线段(贝塞尔、圆弧和椭圆弧)替换为线段。 原理图如下所示: 用法: 通过距离参数对直线段进行增密。利用距离、最大偏转角或最大偏移偏差参数,通过增密操作对曲线段进行简化…...

python中的模块/库

python中的模块/库 什么是库/模块&#xff0c;通俗来讲是用来干啥的&#xff1f; 模块/库就是一个/多个.py的一个文件。通常是用来定义一些通用的方法&#xff0c;避免代码冗余。怎么python中自带的这些模块和库&#xff1f; 使用import进行导入&#xff0c;之后其中的内容就可…...

全面掌握 Jetpack Compose 的 State 体系:核心用法与最佳实践

Jetpack Compose 中的 State 类型全面解析 Jetpack Compose 提供了多种 State 类型来管理 UI 状态。以下是主要的 State 类型及其使用场景&#xff1a; 基础 State 类型 1. mutableStateOf 最基本的可观察状态&#xff0c;用于简单值的变化跟踪&#xff1a; var count by …...

Pyhton类方法添加装饰器案例解析

from functools import wrapsdef keep_alive(func):"""装饰器&#xff1a;为方法自动维护长连接"""wraps(func)def wrapper(self, *args, **kwargs):if not self.conn:self.conn ConnectHandler(**self.device_params)self.conn.enable()return…...

58认知干货:创业经验分享及企业形式的汇总

机会永远都是留给有眼光、能发现机会的人,而不是留给有准备的人!往往机会就在身边,普罗大众却无法发现,而真正适合创业的人,天然具备这方面的能力。 当然后天的补足也未尝不可:“故常有欲以观其微,常无欲以观其妙。””引用《道德经》 读懂这句话自然便会拥有对商业和…...

n8n 快速入门2:构建自动化工作流

n8n 快速入门2:构建自动化工作流 什么是n8n?项目目标准备工作步骤一:创建新工作流步骤二:添加触发节点步骤三:配置NASA节点与凭证1. 添加NASA节点2. 设置NASA API凭证3. 使用表达式设置时间范围步骤四:添加If条件节点1. 创建条件分支2. 测试条件逻辑步骤五:配置输出节点…...

TimSort算法解析

文章目录 1. 核心数据结构1.1 TimSort类定义1.2 关键概念&#xff1a;Run 2. TimSort解决的具体问题分析2.1 处理现实世界中的数据特性2.2 提高排序稳定性2.3 优化归并排序的空间复杂度2.4 处理特殊情况的鲁棒性2.5 适应性能力与算法自调整2.6 优化合并操作效率 3. TimSort核心…...