当前位置: 首页 > 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"}
}

http://www.lryc.cn/news/275583.html

相关文章:

  • c语言试卷
  • 文献阅读:Sparse Low-rank Adaptation of Pre-trained Language Models
  • NCC基础开发技能培训
  • Flink中的状态管理
  • 【linux】线程互斥
  • 机器学习原理到Python代码实现之LinearRegression
  • Hive SQL / SQL
  • 程序媛的mac修炼手册--MacOS系统更新升级史
  • 【数据库原理】(9)SQL简介
  • 第二百五十二回
  • Leetcode 3701 · Find Nearest Right Node in Binary Tree (遍历和BFS好题)
  • 网站被攻击了,接入CDN对比直接使用高防服务器有哪些优势
  • location常用属性和方法
  • 二分图
  • [VUE]3-路由
  • Kafka(六)消费者
  • RK3399平台入门到精通系列讲解(实验篇)共享工作队列的使用
  • STM32 基于 MPU6050 的飞行器姿态控制设计与实现
  • 大数据平台Bug Bash大扫除最佳实践
  • JavaScript 中的数组过滤
  • 随机森林(Random Forest)
  • 本地引入Element UI后导致图标显示异常
  • UE5.1_UMG序列帧动画制作
  • 总结HarmonyOS的技术特点
  • 从0到1入门C++编程——04 类和对象之封装、构造函数、析构函数、this指针、友元
  • Robot Operating System 2: Design, Architecture, and Uses In The Wild
  • TinyEngine 服务端正式开源啦!!!
  • 网页设计与制作web前端设计html+css+js成品。电脑网站制作代开发。vscodeDrea 【企业公司宣传网站(HTML静态网页项目实战)附源码】
  • Avalonia学习(二十)-登录界面演示
  • Spring依赖注入的魔法:深入DI的实现原理【beans 五】