uniapp实现的数据选择器,支持H5、微信小程序

采用uniapp-vue3实现的数据选择器,支持H5、微信小程序(其他小程序未测试过,可自行尝试)

  • 支持本地自定义过滤、远程接口过滤,
  • 为了避免弹窗面板超出边界的情况,自动计算弹窗面板安置的位置(在微信小程序,节点信息是页面渲染后才拿得到,所以会有一段位移过程,大神如果更合适的方案,可以自行优化)
  • 支持自定义弹窗面板显示内容
  • 支持自定义取值字段(默认为options: [{label:‘键’, value: ‘值’, …}]格式)

由于移动端输入场景下会弹出键盘,如果设置为失焦时关闭弹窗面板, 则收起键盘时,弹窗就会被关闭,无法再进行下一步选择。所以采用弹窗常驻,手动点击右边图标关闭弹窗的方式

可到插件市场下载尝试: https://ext.dcloud.net.cn/plugin?id=17287

  • 使用示例

H5示例
在这里插入图片描述
微信小程序示例
在这里插入图片描述

props属性

id

组件唯一标识

同个页面存在多个wo-select组件的情况,id为必填项,因为需要通过id去计算弹窗面板与输入框的位置,以便安置弹窗面板在合适的位置,避免超出边界

id: {type: String,default: 'inputId',reqiured: true
},

value

默认值(valueField字段指定的字段值)

value: {type: String || Number,default: null
},

options

结构化数据

options: {type: Array,default: () => []
},

placeholder

占位描述

placeholder: {type: String,default: '请选择数据'
},

labelField

选中后输入框显示的值的取值字段

labelField: {type: String,default: 'label'
},
如果 options = [{ name: '按钮1', id: 1}, { name: '按钮2', id: 2 }]; labelField = 'name'
则选中后,输入框中则显示name字段的值

valueField

选中值的取值字段

valueField: {type: String,default: 'value'
}
如果 options = [{ name: '按钮1', id: 1}, { name: '按钮2', id: 2 }]; valueField = 'id'
则选中值就是id字段的值

事件

@filter

过滤事件,支持本地过滤、远程过滤等

@on-change

选中后返回值,值为valueField配置的字段值

示例

<template><view class="content"><view class="card"><view class="title">默认样式</view><view><wo-selectclass="white-select":id="'inputOne'":options="state.data":label-field="'label'":value-field="'value'"@filter="onFilter"@on-change="onChangeStaff1"></wo-select></view><view class="title">选中值为:{{ state.res1 }}</view></view><view class="card"><view class="title">设置初始值</view><view><wo-selectclass="white-select":id="'inputTwo2'":value="'2'":options="state.data":label-field="'label'":value-field="'value'"@filter="onFilter"@on-change="onChangeStaff2"></wo-select></view><view class="title">选中值为:{{ state.res2 }}</view></view><view class="card"><view class="title">自定义面板</view><view><wo-selectclass="white-select"ref="selectorRef1":id="'inputTwo1'":options="state.data":label-field="'label'":value-field="'value'"@filter="onFilter"@on-change="onChangeStaff3"><view style="display: flex; flex-direction: column; gap: 20rpx"><view style="display: flex; justify-content:center">这是头部</view><viewv-for="item in state.data":key="item.value"style="font-size: 24rpx; z-index: 120; display: flex; justify-content: space-between;"@click="selectorRef1.onClickSelect(item)"><view style="width: 200px;">{{ item.label }}</view><view style="background-color: dodgerblue; color: white; padding: 4px 8px;border-radius: 8rpx;">{{ item.category }}</view></view></view></wo-select></view><view class="title">选中值为:{{ state.res3 }}</view></view><view class="card dark"><view class="title" style="color: white">暗黑样式</view><view><wo-selectclass="dark-select"ref="selectorRef":id="'inputTwo'":options="state.data":label-field="'label'":value-field="'value'"@filter="onFilter"@on-change="onChangeStaff4"><view style="display: flex; flex-direction: column; gap: 20rpx"><viewv-for="item in state.data":key="item.value"style="font-size: 24rpx; z-index: 120; display: flex; justify-content: space-between;"@click="selectorRef.onClickSelect(item)"><view style="width: 200px;">{{ item.label }}</view><view style="background-color: dodgerblue; color: white; padding: 4px 8px;border-radius: 8rpx;">{{ item.category }}</view></view></view></wo-select></view><view class="title" style="color: white;">选中值为:{{ state.res4 }}</view></view><view class="flex-center">内容区</view><view class="card"><view class="title">面板位置自动调整</view><view><wo-selectclass="white-select":id="'inputThree'":placeholder="'输入过滤'":options="state.data":label-field="'label'":value-field="'value'"@filter="onFilter"@on-change="onChangeStaff5"></wo-select></view><view class="title">选中值为:{{ state.res5 }}</view></view><view class="flex-center">内容区</view></view>
</template><script setup lang="ts">import { reactive, ref } from 'vue'const selectorRef1 = ref()const selectorRef = ref();const state = reactive({data: [{label: '哈墨的脑袋',value: '1',category: '正常'},{label: '摩西女神的手臂',value: '2',category: '异常'},{label: '奥尔墨的铠甲',value: '3',category: '维修中'},{label: '摩西女神的翅膀',value: '4',category: '正常'},{label: '战神瑞尔的斧头',value: '5',category: '正常'},{label: '丘比特的箭头',value: '6',category: '异常'},{label: '雅典娜的光明盾',value: '7',category: '异常'}] as any[],userOptions: [] as any[],res1: '',res2: '',res3: '',res4: '',res5: '',})// 克隆一份数据,用于过滤筛选state.userOptions = JSON.parse(JSON.stringify(state.data))const onFilter = (e: any) => {state.data = state.userOptions.filter((res) => {return res.label.indexOf(e.detail.value) !== -1});};const onChangeStaff1 = (e: any) => {state.res1 = e};const onChangeStaff2 = (e: any) => {state.res2 = e};const onChangeStaff3 = (e: any) => {state.res3 = e};const onChangeStaff4 = (e: any) => {state.res4 = e};const onChangeStaff5 = (e: any) => {state.res5 = e};
</script><style scoped>.content {width: 100%;font-size: 28rpx;}.card {padding: 20px;}.dark {background-color: black;}.dark-select {color: white;}.title {font-weight: 600;font-size: 24rpx;padding-bottom: 10rpx;}:deep .dark-select .panel {background-color: black;}.box {padding: 20px;}.flex-center {display: flex;justify-content: center;align-items: center;height: 600px;background: #666;}
</style>

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

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

相关文章

327京东一面

1.项目相关 2.手撕SQL 两道 3.JMeter性能测试 首先&#xff0c;进行基准测试&#xff1a; 单用户测试&#xff08;单用户循环多次得到的数据&#xff09;&#xff1b;为多用户并发执行提供参考 其次&#xff0c;进行负载测试&#xff1a; 通过逐步增加系统负载&#xff0…

C波段卫星与5G的干扰排查及解决方案

作者介绍 一、方案背景 目前造成C波段卫星信号受5G信号干扰有以下几个原因&#xff1a; ●C波段&#xff08;3.4-4.2GHz&#xff09;和电信5G频段&#xff08;3.4-3.7GHz&#xff09;间存在频谱重叠。 ●地面终端接收到的卫星信号通常比蜂窝信号弱几个数量级&#xff0c;同频…

ATTCK学习笔记

ATT&CK 前言知识 威胁情报&#xff1a;一般为网络流量中或者操作系统上观察到的能高度表明计算机被入侵的痕迹&#xff0c;例如某病毒的Hash值、服务器的IP地址等等。简单来说&#xff0c;威胁情报就像是当计算机被入侵时所表现出来的某种特征&#xff0c;我们将这些威胁…

【氮化镓】GaN器件中关态应力诱导的损伤定位

概括总结&#xff1a; 这项研究通过低频1/f噪声测量方法&#xff0c;探究了在关态&#xff08;OFF-state&#xff09;应力作用下&#xff0c;AlGaN/GaN高电子迁移率晶体管&#xff08;HEMTs&#xff09;中由应力引起的损伤的定位。研究中结合了电致发光&#xff08;EL&#xf…

每天五分钟深度学习:使用神经网络完成人脸的特征点检测

本文重点 我们上一节课程中学习了如何利用神经网络对图片中的对象进行定位,也就是通过输出四个参数值bx、by、bℎ和bw给出图片中对象的边界框。 本节课程我们学习特征点的检测,神经网络可以通过输出图片中对象的特征点的(x,y)坐标来实现对目标特征的识别,我们看几个例子。…

华清远见STM32U5开发板助力2024嵌入式大赛ST赛道智能可穿戴设备及IOT选题项目开发

第七届&#xff08;2024&#xff09;全国大学生嵌入式芯片与系统设计竞赛&#xff08;以下简称“大赛”&#xff09;已经拉开帷幕&#xff0c;大赛的报名热潮正席卷而来&#xff0c;高校电子电气类相关专业&#xff08;电子、信息、计算机、自动化、电气、仪科等&#xff09;全…

如何提高知识库系统管理水平?

我们都有过这样的经历--遇到问题或紧急请求时&#xff0c;第一时间就是向知识库系统寻求帮助。很多时候&#xff0c;当你翻遍了无穷无尽的文档&#xff0c;却发现没有任何东西能够摆脱此时的困境&#xff0c;这时&#xff0c;向服务台提交工单成了不可避免的解决方式&#xff0…

深入理解数据结构第一弹——二叉树(1)——堆

前言&#xff1a; 在前面我们已经学习了数据结构的基础操作&#xff1a;顺序表和链表及其相关内容&#xff0c;今天我们来学一点有些难度的知识——数据结构中的二叉树&#xff0c;今天我们先来学习二叉树中堆的知识&#xff0c;这部分内容还是非常有意思的&#xff0c;下面我们…

钉钉服务端API报错 错误描述: robot 不存在;解决方案:请确认 robotCode 是否正确

problem 调用钉钉服务端API&#xff0c;机器人发送群聊消息&#xff0c;后台返回报错信息: 钉钉服务端API报错 错误描述: robot 不存在&#xff1b;解决方案:请确认 robotCode 是否正确&#xff1b; reason 定位: 登录后台&#xff0c;查看机器人是存在查看机器人调用权限接…

uniapp对接极光推送(国内版以及海外版)

勾选push&#xff0c;但不要勾选unipush 国内版 网址&#xff1a;极光推送-快速集成消息推送功能,提升APP运营效率 (jiguang.cn) 进入后台&#xff0c;并选择对应应用开始配置 配置安卓包名 以及ios推送证书&#xff0c;是否将生产证书用于开发环境选择是 ios推送证书…

2024年3月29日蚂蚁新村今日答案:新兴职业增材制造设备操作员与以下哪项技术密切相关?

蚂蚁新村是一个虚拟社区。在这个虚拟社区中&#xff0c;用户可以参与各种活动&#xff0c;比如生产能量豆、做慈善捐赠等。同时&#xff0c;蚂蚁新村也提供了一些知识问答环节&#xff0c;用户在参与的过程中可以增进知识。这些问答内容往往涉及广泛的主题&#xff0c;如文化、…

【动手学深度学习-pytorch】-9.3深度循环神经网络

到目前为止&#xff0c;我们只讨论了具有一个单向隐藏层的循环神经网络。 其中&#xff0c;隐变量和观测值与具体的函数形式的交互方式是相当随意的。 只要交互类型建模具有足够的灵活性&#xff0c;这就不是一个大问题。 然而&#xff0c;对一个单层来说&#xff0c;这可能具有…

wireshark创建显示过滤器实验简述

伯克利包过滤是一种在计算机网络中进行数据包过滤的技术&#xff0c;通过在内核中插入过滤器程序来实现对网络流量的控制和分析。 在数据包细节面板中创建显示过滤器&#xff0c;显示过滤器可以在wireshark捕获数据之后使用。 实验拓扑图&#xff1a; 实验基础配置&#xff1…

HarmonyOS实战开发-如何实现页面间转场动画

介绍 在本教程中&#xff0c;我们将会通过一个简单的样例&#xff0c;学习如何基于ArkTS的声明式开发范式开发转场动画。其中包含页面间转场、组件内转场以及共享元素转场。效果如图所示&#xff1a; 说明&#xff1a; 本Codelab使用的display接口处于mock阶段&#xff0c;在预…

第十四届蓝桥杯省赛C++ C组所有题目以及题解(C++)【编程题均通过100%测试数据】

第一题《求和》【简单模拟】 【问题描述】 求1&#xff08;含&#xff09;至20230408&#xff08;含&#xff09;中每个数的和。 【答案提交】 这是一道结果填空的题&#xff0c;你只需要算出结果后提交即可。本题的结果为一个整数&#xff0c;在提交答案时只填写这个整数&…

最快捷读取xlsx,用python读取excel转换成json

这是中英文json&#xff0c;用在国际化vue上的&#xff0c;业务人员统计的表格&#xff0c;我需要读取进行转换 # -*- coding: utf-8 -*-import pandas as pd import json# 读取Excel文件中的数据 excel_file rD:\解析excel\中英.xlsx df pd.read_excel(excel_file)# 生成中…

通过dockerfile制作代码编译maven3.8.8+jdk17 基础镜像

一、背景&#xff1a; paas平台维护过程中有一个流水线的工作需要支持运维&#xff0c;最近有研发提出新的需求要制作一个代码编译的基础镜像出来&#xff0c;代码编译的基础镜像需求如下&#xff1a; maven版本&#xff1a;3.8.8版本 jdk版本&#xff1a;17版本&#xff0c;小…

PS从入门到精通视频各类教程整理全集,包含素材、作业等(2)

PS从入门到精通视频各类教程整理全集&#xff0c;包含素材、作业等 最新PS以及插件合集&#xff0c;可在我以往文章中找到 由于阿里云盘有分享次受限制和文件大小限制&#xff0c;今天先分享到这里&#xff0c;后续持续更新 初级教程素材 等文件 https://www.alipan.com/s/fC…

个人简历主页搭建系列-04:网站初搭建

准备工作差不多了&#xff0c;该开始搭建网站了&#xff01; 这次我们先把网站搭建部署起来&#xff0c;关于后续主题内容等更换留到后续。 创建源码文件夹 首先通过 hexo 创建本地源码文件夹。因为最终部署的 github 仓库格式为 websiteName.github.io&#xff08;websiteN…

注意力机制篇 | YOLOv8改进之在C2f模块添加EMA注意力机制(附2种改进方法)

前言:Hello大家好,我是小哥谈。EMA(Exponential Moving Average)注意力机制是一种用于增强模型性能的注意力机制,它通过对模型的特征图进行加权平均来提取更有用的特征信息。具体来说,EMA注意力机制通过引入一个权重因子来调整特征图中每个位置的重要性,从而使模型能够更…