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

老规矩先上效果图:

本组件主要由小程序vant ui组件,vant 小程序ui网址:vant-weapp

主要代码如下:

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

 select-checkbox.wxml:

<view><van-field label="{{label}}" model:value="{{ checkSelected }}" required placeholder="{{ place }}" border="{{ true }}" readonlyright-icon="{{icon}}" bindtap="showPopup" /><van-popup show="{{ show }}" bind:close="onClose" position="bottom" custom-style="height: 60%;overflow:hidden;padding:10rpx 0rpx;"><!-- 取消、确定按钮 --><view class="cityheader"><view bindtap="cancel" class="city-cancel">取消</view><view bindtap="confirm" class="city-true">确定</view></view><!-- 内容区域 --><van-checkbox-group value="{{ result }}" bind:change="onChange"><van-cell-group><van-cellwx:for="{{ list }}"wx:key="index"title="{{ item }}"value-class="value-class"clickabledata-index="{{ index }}"title-width="94%" centerbind:click="toggle"><van-checkboxcatch:tap="noop"label-position="right"class="checkboxes-{{ index }}"name="{{ item }}"/></van-cell></van-cell-group></van-checkbox-group></van-popup>
</view>

select-checkbox.wxss:

/* pages/select-checkbox/select-checkbox.wxss */
.van-cell__value {text-align: left !important;
}
.cityheader {width: 100%;z-index: 5;
}
.city-cancel {float: left;margin: 20rpx;color: #969799;z-index: 11;position: relative;
}
.city-true {float: right;margin: 20rpx;color: #576b95;z-index: 11;position: relative;
}

select-checkbox.js:

// pages/select-checkbox/select-checkbox.js
Component({/*** 组件的属性列表*/properties: {label: String, // 输入框标签place: String, // 输入框提示list: Array, // 选择器 选项checkSelected: { // 选择器 选项数组中 对象的value的默认keytype: String,value: 'text'}},// 监听传入的变量,当传入的值发生变化时,触发方法// observers: {//     'checkSelected': function (val) {//         // val=> 就是父组件传入组件中的 tabsList 数据//         console.log('???:', val)//     }// },/*** 页面的初始数据*/data: {icon:'arrow-down',  // 下拉箭头show: false,result: [],},/*** 组件的方法列表*/methods: {// 取消cancel() {this.setData({ show: false })},// 确定confirm() {this.setData({ show: false })this.triggerEvent('sync', {  // 传递到组件外事件 , 返回当前选中项 对象value: this.data.checkSelected})},showPopup() {this.setData({ show: true })},onClose() {this.setData({ show: false })},onChange(event) {// console.log('event:', event)this.setData({result: event.detail,checkSelected: event.detail.join(',')})// console.log('this.data.checkSelected:', this.data.checkSelected)},toggle(event) {const { index } = event.currentTarget.datasetconst checkbox = this.selectComponent(`.checkboxes-${index}`)checkbox.toggle()},noop() {},  },attached: function () {console.log("父组件传过来:", this.properties.checkSelected) // 可以获取父组件传过来的值},
})

select-checkbox.json:

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

父组件调用:

<view><select-checkbox style="width:100%" label="白蚁种类:" title-width="70" place="请选择白蚁种类" list="{{ list }}" bind:sync="getSelectBox" checkSelected=""></select-checkbox>
</view>
data: {checkSelected: '',list: ['黑翅土白蚁', '黄翅大白蚁', '台湾乳白蚁', '黑胸散白蚁' ],},// 获取选中的值getSelectBox: function(e) {// 打印选中项console.log("11111111:", e.detail.value)this.setData({checkSelected: e.detail.value})},
{"usingComponents": {"select-checkbox": "/components/select-checkbox/select-checkbox"}
}

本组件只要用 vant-checkbox  组件,外套用了 点击弹出vant-popup 弹层,然后封装成组件的模板,全局调用。

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

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

相关文章

vercel部署Gemini pro

一、注册一个vercel账号&#xff08;这个东西类似于第三方的github pages&#xff0c;能部署github中的项目&#xff09; 二、注册结束后&#xff0c;填写github的账号&#xff08;需要事先在该github账号中fork一个gemini的repository&#xff09; 三、babaohuang/GeminiPro…

MT3608L 2.5A 高效的1.2MHz电流模式 低成本升压转换IC 航天民芯

描述 MT3608L是一个恒定的频率&#xff0c;6引脚SOT23电流模式升压转换器&#xff0c;旨在用于小型、低功耗的应用。MT3608L的开关频率为1.2MHz&#xff0c;并允许使用2mm或更低高度的微小、低成本的电容器和电感器。内部软启动导致注入电流小&#xff0c;延长电池寿命。MT3608…

unity C# 中通俗易懂LINQ使用案例

文章目录 1. 从数组或列表中查询元素**&#xff1a;2. **排序与分组**&#xff1a;3. **连接多个数据源**&#xff1a;4. **聚合操作**&#xff1a;5. **分页查询**&#xff1a;6. **多条件查询**&#xff1a;7. **转换和投影&#xff08;Select&#xff09;**&#xff1a;8. *…

众和策略股市行情分析:股票分红是按持股比例来分的吗?

股票分红立足于同股同利的准则&#xff0c;按股东的持股比例来进行股利的派发分红。持股多的股东按比例所得的分红就多&#xff0c;持股少的股东按比例所得的分红就少。 另外&#xff0c;分红详细是指的股票发行公司分配股利的行为。股利包含股息和盈利&#xff0c;股息是指的…

CCF模拟题 202312-1 仓库规划

问题描述 试题编号&#xff1a; 202312-1 试题名称&#xff1a; 仓库规划 时间限制&#xff1a; 1.0s 内存限制&#xff1a; 512.0MB 问题描述&#xff1a; 输入格式 输出格式 样例输入 4 2 0 0 -1 -1 1 2 0 -1样例输出 3 1 0 3样例解释

性能优化-OpenMP基础教程(二)

本文主要介绍OpenMP并行编程的环境变量和实战、主要对比理解嵌套并行的效果。 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;高性能&#xff08;HPC&#xff09;开发基础教程 &#x1f380;CSDN主页 发狂的小花 &…

云原生学习系列之基础环境准备(虚拟机搭建)

最近由于工作需要开始学习云原生相关内容&#xff0c;为方便学习操作&#xff0c;准备在外网搭建自己的环境&#xff0c;然后进行相关的练习&#xff0c;搭建环境的第一步便是虚拟机的安装。 基础软件 这里我用到的是CentOS-7-x86_64的操作系统。 链接&#xff1a;https://pa…

Mac环境下Parallels Desktop 19的安装和使用

为了后续构建漏洞靶场和渗透测试环境&#xff0c;我们需要提前准备好几套与宿主机隔离的工作环境&#xff08;Windows、Linux等&#xff09;&#xff0c;在Mac上最常用的就是Paralles Desktop&#xff08;PD&#xff09;工具了&#xff0c;当前最新版本为19。接下来介绍如何安装…

Go后端开发 -- main函数 变量 常量 函数

Go后端开发 – main函数 & 变量 & 常量 & 函数 文章目录 Go后端开发 -- main函数 & 变量 & 常量 & 函数一、第一个main函数1.创建工程2.main函数解析 二、变量声明1.单变量声明2.多变量声明 三、常量1.常量的定义2.优雅的常量 iota 四、函数1.函数返回…

Rancher 单节点 docker 部署备份与恢复

Rancher 单节点 docker 部署备份与恢复 1. 备份集群 获取 rancher server 容器名&#xff0c;本例为 angry_aryabhata docker ps | grep rancher/rancher6a27b8634c80 rancher/rancher:v2.5.14 xxx angry_aryabhata停止容器 docker stop angry_aryabhata创建备…

终于找全了:蝴蝶效应、青蛙现象、鳄鱼法则、鲇鱼效应、羊群效应、刺猬法则、手表定律、破窗理论、二八定律、木桶理论,值得收藏

1、蝴蝶效应: 上个世纪70年代&#xff0c;美国一个名叫洛伦兹的气象学家在解释空气系统理论时说&#xff0c;亚马逊雨林一只蝴蝶翅膀偶尔振动&#xff0c;也许两周后就会引起美国得克萨斯州的一场龙卷风。   蝴蝶效应是说&#xff0c;初始条件十分微小的变化经过不断放大&…