vue实现@唤起列表功能(借助ElAutocomplete)

实现一个输入组件

myAutoComplete.vue

<template><el-autocomplete ref="autoRef" :model-value="state" @input="handleInput" :onkeyup="handleKey":fetch-suggestions="querySearch" @select="handleSelect" :select-when-unmatched="true" placeholder="Please Input"><template #prepend><slot name="prepend"></slot></template></el-autocomplete>
</template>
<script setup lang="ts">
import { connectData } from '@/api/modules/word';
const state = ref('');
const props = defineProps(['modelValue'])
const emits = defineEmits(['update:modelValue'])
const range = ref(0)//光标位置
onMounted(() => {console.log(props.modelValue)state.value = props.modelValue ? props.modelValue : ''
})
watch(state, (val) => {if (val.charAt(val.length - 1) === '@') {return}emits('update:modelValue', state.value)
})
const restaurants = connectData.data.records.map((item: any) => {return {value: '@' + item.aliasZh,address: item.aliasZh,};
});const querySearch = (queryString: string, cb: Function) => {queryString = queryString.substring(0, range.value)const query = '@' + queryString.split('@')[queryString.split('@').length - 1]const results = queryString? restaurants.filter((restaurant: any) => restaurant.value.includes(query)): restaurants;// 调用 callback 返回建议列表的数据cb(results);
};
const autoRef = ref()
const handleSelect = (item: any) => {const modelvalue = props.modelValue ? props.modelValue : ''//删除@符号和之后的内容const index1 = modelvalue.lastIndexOf('@')const index2 = modelvalue.lastIndexOf('}')const last = modelvalue.substring(range.value)if (index1 !== -1 && index2 !== -1 && index1 > index2) {state.value = modelvalue.substring(0, index1) + '{' + item.value + '}' + lastnextTick(() => {autoRef.value.inputRef.input.selectionStart = index1 + item.value.length + 2autoRef.value.inputRef.input.selectionEnd = index1 + item.value.length + 2})return}state.value = modelvalue.substring(0, range.value - 1) + '{' + item.value + '}' + modelvalue.substring(range.value)nextTick(() => {autoRef.value.inputRef.input.selectionStart = range.value + item.value.length + 1autoRef.value.inputRef.input.selectionEnd = range.value + item.value.length + 1})
}
const handleInput = (val: string) => {state.value = val}
const handleKey = (event: any) => {range.value = event.target.selectionStart
}
</script>

在页面使用

  <myAutoComplete v-model="data.label" style="width: 100%;"><template #prepend><el-button :icon="NodeIcon(data)" /></template></myAutoComplete>

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

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

相关文章

Spring动态代理

一、代理 代理&#xff08;Proxy&#xff09;是一种设计模式&#xff0c;提供了对目标对象的另外的访问方式。 代理意义&#xff1a;可以再目标对象代码实现的基础上&#xff0c;增强额外的功能代码。 二、静态代理 静态代理&#xff0c;编译时就已经确定下来了接口代理类被…

LeetCode每日一题-接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表…

Spring中事务失效的8中场景

1. 数据库引擎不支持事务 这里以 MySQL为例&#xff0c;MyISAM引擎是不支持事务操作的&#xff0c;一般要支持事务都会使用InnoDB引擎&#xff0c;根据MySQL 的官方文档说明&#xff0c;从MySQL 5.5.5 开始的默认存储引擎是 InnoDB&#xff0c;之前默认的都是 MyISAM&#xff…

Python in VS Code 2023年7月发布|Mypy 扩展预览版与调试扩展、Pylance 本地化及其他

排版&#xff1a;Alan Wang 我们很高兴地宣布 Visual Studio Code 的 Python 和 Jupyter 扩展将于 2023 年 7 月发布&#xff01; 此版本包括以下更新&#xff1a; Mypy 扩展预览版预览版中的调试扩展Pylance 本地化使用 Pylance 的第三方库的索引持久性即将弃用 Python 3.7 支…

分享5款有点冷门的实用派软件

​ 分享5款冷门但值得下载的Windows软件&#xff0c;个个都是实用&#xff0c;你可能一个都没见过&#xff0c;但是 我觉得你用过之后可能就再也离不开了。 系统监控——XMeters ​ XMeters是一个系统监控软件&#xff0c;可以让你在任务栏上显示各种系统信息&#xff0c;如C…

C# List 详解三

目录 11.Equals(Object) 12.Exists(Predicate) 13.Find(Predicate) 14.FindAll(Predicate) 15.FindIndex(Int32, Int32, Predicate) 16.FindIndex(Int32, Predicate) 17.FindIndex(Predicate) C# List 详解一 1.Add(T)&#xff0c;2.AddRa…

15 | 线性回归代码实现

文章目录 线性回归实现Lasso回归和岭回归多项式回归线性回归实现 线性回归是处理一个或者多个自变量和因变量之间的关系,然后进行建模的一种回归分析方法。如果只有一个自变量的情况称为一元线性回归,如果有两个或两个以上的自变量,就称为多元回归。在sklearn中linear_mode…

探秘MySQL底层架构:设计与实现流程

前言 Mysql&#xff0c;作为一款优秀而广泛使用的数据库管理系统&#xff0c;对于众多Java工程师来说&#xff0c;几乎是日常开发中必不可少的一环。无论是存储海量数据&#xff0c;还是高效地检索和管理数据&#xff0c;Mysql都扮演着重要的角色。然而&#xff0c;除了使用My…

WPF实战学习笔记05-首页界面

首页界面 新建文件 添加文件&#xff3b;类型&#xff1a;用户控件&#xff3d; ./Common/Models/TaskBars.cs ./Common/Models/ToDoDto.cs ./Common/Models/MemoDto.cs 新建类 TaskBars.cs using System; using System.Collections.Generic; using System.Linq; using Sy…

【JAVA】 String 方法附件

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️初识JAVA】 文章目录 String 方法 String 方法 char charAt(int index)返回指定索引处的 char 值。int compareTo(Object o) 把这个字符串和另一个对象比较。 int compareTo(String anotherString)按…

基于Jquery EasyUI JSZip FileSaver的简单使用

一、前言 在前端的项目开发中 &#xff0c;下载文件压缩包是很重要的一个环节&#xff0c;那么怎么下载多个文件并压缩成ZIP下载呢&#xff1f; 二、使用步骤 1、引用库 <script type"text/javascript" src"~/Scripts/comm/jszip.min.js" ></…

【http长连接+池化】

参考&#xff1a; https://it.cha138.com/ios/show-49862.html http://blog.chinaunix.net/uid-16480950-id-103597.html https://www.cnblogs.com/kevin-yuan/p/13731552.html https://www.jianshu.com/p/17e9aacca438 一、http长连接和短连接 HTTP协议是无状态的协议&#…

AMEYA360报道:手机直连卫星通信发展的三个阶段

卫星通信的发展从过去、现在与规划&#xff0c;可以分为三个阶段。手机卫星通信的第一个阶段中&#xff0c;较为典型的有铱星公司、海事卫星电话、天通卫星通信等&#xff0c;终端设备方面已经可以做到手持设备直接通过自带的天线与卫星进行通信。 包括铱星、天通卫星等&#x…

C# WPF项目创建(基于VS 2019介绍)

1.打开VS&#xff0c;选择《创建新项目》 2.选择《WPF应用》&#xff0c;这里设计两个有.NET Framework框架和.NET core 框架&#xff0c;如图所示&#xff1a; 区别&#xff1a; .NET Framework 框架只能在windows下使用 .NET core 框架支持linux 下运行 3. 项目名称根据需…

深入浅出Pytorch函数——torch.unsqueeze

分类目录&#xff1a;《深入浅出Pytorch函数》总目录 相关文章&#xff1a; 深入浅出Pytorch函数——torch.squeeze 深入浅出Pytorch函数——torch.unsqueeze 返回一个新的张量&#xff0c;且在指定位置新插入了一个大小为1的维度&#xff0c;返回的张量与该张量共享相同的底…

【C++】入门 --- 缺省参数函数重载

文章目录 &#x1f96e;一、缺省参数&#x1f355;1、基本概念&#x1f355;2、缺省参数的分类&#x1f6a9;全缺省参数&#x1f6a9;半缺省参数&#x1f6a9;缺省参数实用案例 &#x1f96e;二、函数重载&#x1f355;1、函数重载概念1️⃣参数类型不同2️⃣参数个数不同3️⃣…

Canal安装部署与测试

文章目录 第一章 Canal概述1.1 简介1.2 工作原理1.2.1 MySQL主备复制原理1.2.2 canal 工作原理 1.3 重要版本更新说明1.4 多语言 第二章 Canal安装部署2.1 准备2.2 canal安装 第三章 Canal和Kafka整合测试注意事项 第一章 Canal概述 Github地址&#xff1a;https://github.com…

使用goldengate 迁移Oracle到postgresql

环境&#xff1a; --源端&#xff1a; IP&#xff1a;10.0.4.16 hostname&#xff1a;tencent Oracle数据库版本&#xff1a;12.2.0.1.0 ogg for oracle版本&#xff1a;19.1.0.0.4 SID&#xff1a;orcl --目标端&#xff1a; IP&#xff1a;10.0.4.16 hostname&#…

ES6基础知识三:对象新增了哪些扩展?

一、属性的简写 ES6中&#xff0c;当对象键名与对应值名相等的时候&#xff0c;可以进行简写 const baz {foo:foo}// 等同于 const baz {foo}方法也能够进行简写 const o {method() {return "Hello!";} };// 等同于const o {method: function() {return "…

【MATLAB绘图】

MATLAB绘图函数&#xff1a;Plot函数详解 介绍 MATLAB是一种常用的科学计算和数据可视化工具&#xff0c;它提供了强大的绘图函数&#xff0c;使用户能够创建各种类型的图表和图形。 基本语法 plot函数的基本语法如下&#xff1a; plot(x, y)其中&#xff0c;x和y是长度相…