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

微信小程序封装vant 下拉框select 单选组件

先上效果图:

主要是用vant 小程序组件封装的:vant 小程序ui网址:vant-weapp

 主要代码如下:

先封装子组件: select-popup  放在 components 文件夹里面

select-popup.wxml:

<!--pages/select-popup/select-popup.wxml-->
<van-field label="{{label}}" required model:value="{{ value }}" placeholder="{{place}}" border="{{ true }}" readonlyright-icon="{{icon}}" bindtap="tap" />
<van-popup show="{{ popShow }}" position="bottom" custom-style="height: 50%;overflow:hidden"><van-picker value-key="{{valueKeyName}}" id="picker" show-toolbar title="{{label}}" columns="{{ columns }}" bind:cancel="onCancel" bind:confirm="onConfirm" />
</van-popup>

select-popup.js:

// pages/select-popup/select-popup.js
Component({/*** 组件的属性列表*/properties: {label: String, // 输入框标签place: String, // 输入框提示columns: Array, // 选择器 选项valueKeyName:{ // 选择器 选项数组中 对象的value的默认keytype: String,value: 'text'}},/*** 组件的初始数据*/data: {popShow: false,icon:'arrow-down'  // 下拉箭头},/*** 组件的方法列表*/methods: {// 点击输入框触发tap() {this.setData({popShow: true,icon:'arrow-up'})},// 点击取消onCancel() {this.setData({popShow: false,icon:'arrow-down'})},// 点击确认onConfirm(e) {let pic, valuepic = this.selectComponent('#picker')// 获取当前选中项的值  改值为对象value = pic.getValues()this.setData({value: value[0][this.data.valueKeyName],  // 设置输入框为选择器选中的值})this.triggerEvent('confirm', {  // 传递到组件外事件 , 返回当前选中项 对象value: value[0]})this.onCancel()}}
})

select-popup.json

{"component": true,"usingComponents": {"van-field": "@vant/weapp/field/index","van-popup": "@vant/weapp/popup/index","van-picker": "@vant/weapp/picker/index"}
}

父组件调用:

    <!-- 下拉框选项组件 --><select-popup label="选择项目" place="请选择项目" columns="{{list}}" bind:confirm="getSelectProject" valueKeyName="name"></select-popup>

js:

data: {// 下拉框选项组件list:[{code:'1',name:'项目1'},{code:'2',name:'项目2'},{code:'3',name:'项目3'},{code:'4',name:'项目4'}]
},
// 获取选中的项目getSelectProject: function(e) {// 打印选中项console.log(e.detail.value);},
{"usingComponents": {"select-popup": "/components/select-popup/select-popup"}
}

相关文章:

  • 在IDEA中使用git分支进行开发然后合并到Master分支,2022.1.x版本
  • 【IPC通信--socket套接字--心跳包】
  • webpack配置入门
  • vue2 element 弹出框拖拽会出现一层阴影问题
  • MidTool图文创作-GPT-4与DALL·E 3的结合
  • 互联网分布式应用之SpringCloud
  • JavaWeb——新闻管理系统(Jsp+Servlet)之jsp新闻查询
  • Linux离线安装MySQL(rpm)
  • java基于SSM的游戏商城的设计与实现论文
  • 总结ECMAScript和JavaScript的区别
  • sublim安装Autoprefixer插件
  • 滑动窗口协议仿真(2024)
  • GoldenGate工作原理及应用场景
  • 面试算法91:粉刷房子
  • CentOS使用docker安装mysql并使用navicat 远程链接
  • 0x05 Python数据分析,Anaconda八斩刀
  • Apache的基本使用
  • CentOS从零开始部署Nodejs项目
  • eclipse的离线汉化
  • FastReport在线报表设计器工作原理
  • HTTP那些事
  • java8-模拟hadoop
  • JS题目及答案整理
  • MySQL的数据类型
  • Netty 4.1 源代码学习:线程模型
  • php ci框架整合银盛支付
  • Python连接Oracle
  • Tornado学习笔记(1)
  • Vultr 教程目录
  • windows-nginx-https-本地配置
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 第2章 网络文档
  • 前端相关框架总和
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 微信开放平台全网发布【失败】的几点排查方法
  • 小李飞刀:SQL题目刷起来!
  • 浅谈sql中的in与not in,exists与not exists的区别
  • #14vue3生成表单并跳转到外部地址的方式
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • #每天一道面试题# 什么是MySQL的回表查询
  • (JS基础)String 类型
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (五)网络优化与超参数选择--九五小庞
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • .Net 4.0并行库实用性演练
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET Core 项目指定SDK版本
  • .Net 垃圾回收机制原理(二)
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .net快速开发框架源码分享