uni app 自定义 带popup弹窗的input组件

工作需要。自定义了个带popup弹窗的input组件。此组件满足个人需求,不喜勿喷。应该可以看明白怎么回事,也能自己改改,所以就不要联系了,点赞收藏就好

<template><view class="dialog_main"><input v-model="inputvalueClone" class="select_input" placeholder-class="down_select_input_placeholder"placeholder="请输入或选择" @focus="input_focus" @input="input_value" /><view class="select_mian" v-if="showPickerClone"><view class="button_main"><text></text><text class="button_name" @click="qd_click">确定</text></view><scroll-view v-if="showPickerClone" class="scroll_y" :scroll-y="true"><view class="list_main" :id="index" v-for="(item, index) in datalistClone" :key="index"><text v-if="!item.ishow" @click="item_click(item)" class="item_name">{{ item[showkey]  }}</text></view></scroll-view></view></view>
</template><script>import myclient from '../../utils/myclient.js'import utils from '../../utils/utils.js';export default {data() {return {inputvalueClone: "",showPickerClone: false,datalistClone: [],selectedIndex: 0, // 当前选中的索引  };},/*** 组件的属性列表*/props: {showkey: {type: String,default: ''},clienturl: {type: String,default: ''},paramsvalue: {type: String,default: ''},params: {type: Object,default: ''},reqmethod: {type: String,default: 'POST'},datapath: {type: String,default: ''},inputvalue: {type: String,default: ''},callback: {type: String,default: ''}},/*** 组件的方法列表*/methods: {input_value: function(e) {var value = e.detail.valuethis.inputvalueClone = valueif (value.length == 0) {this.datalistClone = utils.setShow(this.datalistClone, true)} else {for (var i = 0; i < this.datalistClone.length; i++) {this.datalistClone[i].ishow = trueif (this.datalistClone[i][this.showkey].indexOf(value) >= 0) {this.datalistClone[i].ishow = false}}this.$forceUpdate()}},input_focus: function() {var that = thismyclient.callGetorPost(this.clienturl, this.reqmethod, this.params, false, function(res) {var paths = that.datapath.split('.');var datas = res;for (let i = 0; i < paths.length; i++) {datas = datas[paths[i]];}if (that.inputvalueClone.length == 0) {that.datalistClone = utils.setShow(datas, true)} else {for (var i = 0; i < datas.length; i++) {datas[i].ishow = trueif (datas[i][that.showkey].indexOf(that.inputvalueClone) >= 0) {datas[i].ishow = false}}that.datalistClone = datas}that.showPickerClone = true})},item_click(e) {this.showPickerClone = falsethis.$emit('callBack', {detail: e,value: this.inputvalueClone});},qd_click: function() {this.showPickerClone = falsethis.$emit('callBack', {value: this.inputvalueClone});}},watch: {inputvalue: {handler: function(newval, oldval) {this.inputvalueClone = newval},immediate: true}}};
</script><style lang="scss" scoped>@function tovmin($rpx) {//$rpx为需要转换的字号@return #{$rpx * 100 / 750}vmin;}.dialog_main {width: 100vw;display: flex;flex-direction: column;}.select_mian {width: 80vw;min-height: 10vh;max-height: 50vh;box-shadow: 0rpx 0rpx 12rpx 0rpx rgba(7, 165, 166, 0.11);z-index: 2;border: solid 2rpx #efefef;}.button_main {width: 100%;height: 80rpx;display: flex;flex-direction: row;border-bottom: #00a99d dotted 2rpx;justify-content: space-between;}.button_name {color: #00a99d;display: flex;align-items: center;text-align: center;justify-content: center;width: 100rpx;height: 100%;}/* 在这里添加你的样式 */.scroll_y {width: 100%;height: 100%;}.list_main {width: 100vw;display: flex;flex-direction: column;align-items: center;vertical-align: center;}.item_name {font-size: 28;padding-top: 5rpx;padding-bottom: 5rpx;width: 100%;min-height: tovmin(80);display: flex;align-items: center;justify-content: center;text-align: left;margin-right: tovmin(32);color: #333;font-weight: 600;overflow-y: auto;overflow-x: scroll;align-items: center;border-bottom: solid #efefef 2rpx;white-space: normal;word-break: break-all;word-wrap: break-word;}.select_input {color: #333;margin-bottom: 10rpx;padding: 0 20px 0px 0px;font-size: 14px;flex: 1;font-weight: 600;}
</style>

讲一下:

        myclient 封装的网络请求

        utils 是封装的工具类,setshow 是给各个对象添加一个字段isshow  用户对象是否展示出来

        showkey 列表中要展示的字段,比如name

        clienturl  要访问的接口获取列表数据

        paramsvalue 输入框输入的值放在接口参数的那个字段  比如keyword  //本示例中么有用此字段的后面会加上

        params   接口参数

        reqmethod 接口请求方式  GET  POST

        datapath 接口返回的数据取支路径 例如data.data.list

        inputvalue 输入框默认值,也就是 keyword的默认值例如 params={keyword:5} 那么 inputvalue=5

        callback:点确定或 列表回调

使用:

        要使用的页面 增加

        import inputselectVue from './component/inputselect.vue';

        components: {
           
            inputselectVue,

        },


         <inputselectVue class="select_input" showkey="strname"
                 :clienturl="strurl" :params="{keyword:0}" reqmethod="POST"
                  datapath="data.data.list" :inputvalue=" strname"
                   @callBack="name_callback">
          </inputselectVue>

        name_callback: function(e) {
                console.log(JSON.stringify(e))

                if (e.detail) {

                    this.strname= e.detail.strname;

                } else {
                     this.strname= e.detail.value;  

                }

                this.$forceUpdate()
        },

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

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

相关文章

Mantis-ML 2.0识别基因-疾病关联,Beam Pro实现无需后期的AR视频拍摄与三维空间应用

一支烟花官网&#xff1a; https://agifun.love 智源社区 Sci. Adv. | 治疗性遗传靶点的全表型识别 DRUGAI今天为大家介绍的是来自Dimitrios Vitsios团队的一篇论文。人类基因组数据集的持续扩展推动了治疗靶点的识别&#xff0c;然而&#xff0c;从基因注释中提取基因-疾病…

这份简历让一位程序员在谷歌获得30万美元

大家好&#xff0c;我是弗雷。每次都在让大家尝试走出职场&#xff0c;但今天我们却选择再次走进职场。 作为曾经的职场人&#xff0c;我深深明白简历的敲门砖作用&#xff0c;制作一份优质的简历至关重要。 你所见过的最优秀的简历是什么样子&#xff1f; 或者你想象中最优秀…

商业银行和投资银行有什么区别?

商业银行和投资银行在业务性质、服务对象、风险管理等方面有显著区别。以下是两者的主要区别及相关的历史背景&#xff1a; 中文版 商业银行&#xff08;Commercial Bank&#xff09; 主要功能 存款业务&#xff1a;吸收公众存款&#xff0c;并为存款人提供安全的存款服务。…

Superset二次开发之调研篇 v3.0 VS v4.0

功能变化(v3.0 与 v4.0)参考releases 在 Superset 官方版本升级过程中,对源码进行了大量修改。这不仅解决了许多安全问题,减少了漏洞,还显著增强了系统的稳定性和安全性。同时,废弃了旧的可视化图表和许多不再使用的功能,也引入了众多新的用户体验和改进之处。关注版本…

vscode创建一个jest测试框架的项目

在Visual Studio Code (VSCode) 中创建一个用于单独测试JavaScript方法的项目相对简单。以下是一步步指导&#xff1a; ### 1. 创建项目文件夹 首先&#xff0c;在你的电脑上选择一个合适的位置创建一个新的文件夹&#xff0c;这将作为你的项目目录。 ### 2. 打开VSCode并设置项…

chatgpt的命令词

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

TypeScript 学习笔记(二十二):TypeScript 与微服务架构的结合使用

TypeScript 学习笔记&#xff08;二十二&#xff09;&#xff1a;TypeScript 与微服务架构的结合使用 1. 引言 在前几篇学习笔记中&#xff0c;我们探讨了 TypeScript 的基础知识、前后端框架的结合应用、性能优化、前端架构设计、工具和生态系统&#xff0c;以及 TypeScript…

MYSQL execute command denied to user ‘‘@‘%‘ for routine

有时候 某个MYSQL用户无法执行某个函数. 有时候你赋了EXECUTE *.* 权限也不行 grant EXECUTE on DATA.* to platfrom%; 还真麻烦! show grants for platfrom%; 先看下有啥权限? 查找一翻 正确赋函数执行权限是这样的 grant EXECUTE on function data.RAND_STRING to p…

ABBYY Finereader 15软件下载及安装教程

ABBYY FineReader 是一款功能强大的 OCR&#xff08;Optical Character Recognition&#xff09;软件&#xff0c;可以将扫描的文档转换为可编辑的文本文件。它不仅可以识别文本&#xff0c;还可以识别表格、图像和布局&#xff0c;使得文档的转换更加准确和方便。 安 装 包 获…

Opus从入门到精通(五)OggOpus封装器全解析

Opus从入门到精通(五)OggOpus封装器全解析 为什么要封装 前面Opus从入门到精通(四)Opus解码程序实现提到如果不封装会有两个问题: 无法从文件本身获取音频的元数据(采样率,声道数,码率等)缺少帧分隔标识,无法从连续的文件流中分隔帧(尤其是vbr情况) 针对上面的问题我们可以…

算法day31

第一题 542. 01 矩阵 本题本来求解的是每一个1到0的最短距离并返回到矩阵之中&#xff1b; 我们采用正难则反的思路&#xff0c;将其化解为每一个0到每一个1的最短距离&#xff0c;并通过矩阵来返回&#xff1b; 解法&#xff1a;多源bfs正难则反 步骤一&#xff1a; 定义一个…

如何通过ChatGPT赚取11000美元:我的成功故事

作者&#xff1a;Skylar Johnson 随着像ChatGPT这样的AI语言模型的出现&#xff0c;赚取金钱和使用先进技术的机会变得越来越容易获得。在这篇文章中&#xff0c;我将分享我个人如何利用ChatGPT赚取11000美元的成功故事。跟随我的旅程可以给你提供洞见和灵感&#xff0c;去探索…

换卡槽=停机?新手机号使用指南!

刚办理的手机号莫名其妙的就被停用了&#xff1f;这到底是怎么回事&#xff1f;这篇文章快来学习一下吧。 ​ 先说一下&#xff0c;你的手机为什么被停机&#xff1f; 现在运营商对于手机卡的使用有着非常严格的要求&#xff0c;尤其是刚办理的新号码&#xff0c;更是“严上加…

Docker镜像构建:Ubuntu18.04+python3.10

1、编写 Dockerfile # 使用Ubuntu 18.04作为基础镜像 FROM ubuntu:18.04RUN apt-get update && apt-get install -y \build-essential \curl \zlib1g-dev \libssl-dev \&& rm -rf /var/lib/apt/lists/*ENV PYTHON_VERSION3.10.8RUN curl -O https://www.pytho…

el-table表格与分页器实现跨页连续计数

直接看代码,只需要让页数pageNum减去1后去乘以要展示的数量pageSize再加上当前索引值加1就可以 <el-table :data"tableData" stripe class"table" ><el-table-column label"序号" type"index" width"100"><t…

【2024算力大会分会 | SPIE独立出版 | 往届均已完成EI检索】2024云计算、性能计算与深度学习国际学术会议(CCPCDL 2024)

【2024算力大会分会 | SPIE出版】 2024云计算、性能计算与深度学习国际学术会议(CCPCDL 2024) 2024 International conference on Cloud Computing, Performance Computing and Deep Learning *CCPCDL往届均已完成EI检索&#xff0c;最快会后4个半月完成&#xff01; 一、…

有关侧信道攻击,你都知道哪些? 你们的TEE/TA可以防侧信道攻击吗?

侧信道攻击(Side-Channel Attacks,SCA)是一种利用物理信息泄露来推断计算机系统内秘密数据的攻击方法。它与传统的攻击方法不同,不直接依赖于算法的漏洞,而是通过分析系统在处理数据时的物理特性(如功耗、电磁辐射、时间延迟等)来推断机密信息。 常见的侧信道攻击类型 …

算法金 | 再见!!!K-means

大侠幸会&#xff0c;在下全网同名「算法金」 0 基础转 AI 上岸&#xff0c;多个算法赛 Top 「日更万日&#xff0c;让更多人享受智能乐趣」 今天我们来聊聊达叔 6 大核心算法之 —— k-means 算法。最早由斯坦福大学的 J. B. MacQueen 于 1967 年提出&#xff0c;后来经过许多…

进口二手RS FSH4规格3.6G罗德与施瓦茨 FSH6参数

Rohde & Schwarz FSH4 的规格包括&#xff1a; 频率范围从 9 kHz 到 3.6 GHz 高灵敏度&#xff08;<-141dBm&#xff08;1Hz&#xff09;&#xff0c;或使用可选前置放大器<-161dBm&#xff08;1Hz&#xff09;&#xff09; 低测量不确定度&#xff08; 内部跟踪发生…

SpringCloud 前端-网关-微服务-微服务间实现信息共享传递

目录 1 网关获取用户校验信息并保存至请求头&#xff08;前端-网关&#xff09; 2 微服务获取网关中的用户校验信息&#xff08;网关-微服务&#xff09; 2.1 一般的做法是在公共的module中添加&#xff0c;此处示例为common 公共配置module中添加 2.2 定义拦截器 2.3 定义…