背景:

最近在做项目的时候遇到一个问题,那就是微信的官方表单组件的可扩展性不强,无法达到设计稿所要求的效果,所以想到了用自定义组件的方法自定义一个表单组件。

(自定义组件其实往往用在需要复用的地方,比如每个页面都有一样的头部和底部,那么我们就可以把它们封装到自定义组件中,这样就不用每个页面都复制粘贴一样的一堆代码了)

开始:

下面以自定义radio组件为例:

官方radio的样式只能修改color(当然要修改其他样式也是有办法的,不过较为麻烦,这里先不提),扩展性不强。

而我想要达到类似于button样式的效果↓

那么就需要自定义一个radio出来了。

第一步:

首先在该目录下新建一个components 文件夹(当然文件夹命名也可以取其他,不过命名为components方便辨认)

再在components里新建一个文件夹用于放自己的自定义组件,这里我统一命名为myradio

鼠标移到myradio处右键选择"新建 Component",接着自动生成如下四个文件

第二步:

分别在myradio.wxml、myradio.wxss和myradio.js中写入以下代码↓

myradio.wxml:

//class里是选中与未选中的样式,point是鼠标的点击事件名,data-index是在point这个鼠标点击事件的返回值data中传入名为index的值
<view class="radio"><view class="{{currentIndex==1?'item_active':'item'}}" bindtap="point" data-index="1">男</view><view class="{{currentIndex==0?'item_active':'item'}}" bindtap="point" data-index="0">女</view>
</view>

myradio.wxss:

注意自定义组件中的wxss的选择器最好写类选择器,否则会警告、甚至出现意料之外的副作用。

//盒子使用弹性布局(给父盒子添加display:flex)
.radio{width: 580rpx;height: 80rpx;display: flex;justify-content: center;
}
.item{width: 200rpx;height: 80rpx;border-radius: 20rpx;margin: 0 30rpx;background-color:lightgrey;color: white;display: flex;justify-content: center;align-items: center;
}
.item_active{width: 200rpx;height: 80rpx;border-radius: 20rpx;margin: 0 30rpx;background-color:#503E9D;color: white;display: flex;justify-content: center;align-items: center;
}

myradio.js:

Component({// 使自定义组件有类似于表单控件的行为behaviors: ['wx://form-field'],/*** 组件的属性列表*/properties: {value:{//这里的属性名之所以取名value是因为表单控件有name和value属性type:String,value:"1"}},/*** 组件的初始数据*/data: {currentIndex:1},/*** 组件的方法列表*/methods: {point(e){const {index}=e.currentTarget.dataset;if(index==1){this.setData({//properties和data里的值都可用setData设置value:"1",//1表示男currentIndex:1})}else{this.setData({value:"2",//2表示女currentIndex:0})}}}
})

第三步:

在要引入该自定义组件的页面的json文件中写上↓

{"usingComponents": {"myradio":"/components/myradio/myradio"//这里我把该组件的标签也命名为myradio}
}

然后在要引入的页面的wxml文件中用myradio标签引入即可,比如↓

<view>//这里包裹该自定义组件的大盒子样式未给出,可以根据自身需求写样式<text>性别</text><myradio name="gender" value="1"></myradio>//myradio标签
</view>

最终效果举例:(这样就做好啦!)

微信小程序之自定义表单组件(radio)相关推荐

  1. 微信小程序wepy自定义card控件封装

    微信小程序wepy自定义card控件 在利用wepy开发小程序的过程中,需要使用自定义控件来实现,但是很多时候,若直接在page页面中写对应的控件,下次在另一个页面中,想使用同样的控件又需要重新绑定数 ...

  2. 微信小程序图标不支持html,微信小程序实现自定义加载图标功能

    效果图 实现思路 1.首先通过HTML+CSS实现加载动画的静态效果: 2.根据需求给每个动画设计不同的动画效果. 例如第一个加载图标的静态绘制 1.首先确定动画的盒子宽高: 2.设置盒子中每一个长方 ...

  3. 微信小程序可以加服务器上的字体,微信小程序中自定义字体

    微信小程序支持自定义字体开放出来也有段时间,这边整理下使用自定义字体中,容易忽略的一些问题,和简便的全局自定义方式.如果是同时加载两种字体包,先下载下来的会被后下载下来的字体包给覆盖. 官网接口文档 ...

  4. 微信小程序之自定义模态弹窗(带动画)实例

    代码地址如下: http://www.demodashi.com/demo/13991.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.c ...

  5. 微信小程序之——自定义分享按钮(完整版)

    声明 onShareAppMessage 函数 onShareAppMessage() { return {          title: '弹出分享时显示的分享标题'        desc: ' ...

  6. 【微信小程序】自定义弹窗蒙版输入框效果图完整代码

    [微信小程序]自定义弹窗文本输入框效果图&完整代码 效果图 在输入框中进行内容的输入 点击确认后在姓名一栏进行更新修改 点击返回后姓名一栏不做任何修改 在这个的基础上你可以自定义任何弹窗 wx ...

  7. 【微信小程序】自定义加载动画3

    目录 效果图 配置 版本1 版本2 结语 效果图 配置 配置方法参考上一篇文章:[微信小程序]自定义加载动画 版本1 Component({behaviors

  8. 【微信小程序】自定义加载动画4

    目录 效果图 配置文件 结语 效果图 配置文件 配置方法参考上一篇文章:[微信小程序]自定义加载动画 组件源代码: Component({behaviors: [],properties: {

  9. 微信小程序可自定义单片机温湿度阈值(基于esp32c3+onenet+微信小程序)

    ​ 前段时间有个粉丝问我能不能出一个微信小程序调节阈值的教程,我就下班之余在原来的基础上改进一下,因为是修改阈值,这里我就用继电器控制风扇.温度达到一定阈值控制风扇启动来做例子.这个成功了,其他阈值修 ...

最新文章

  1. AlphaGo的原理
  2. python图形编程基础-Python从基础到入门系列教程
  3. 固态硬盘Ghost安装Windows 10无法引导的问题
  4. Java8中 Date和LocalDateTime的相互转换
  5. Opencv——图像金字塔与图像尺寸缩放
  6. jffs2 启动的常见的问题
  7. 和佳股份有没有纳米机器人_新高赛复赛入围项目(49)一种纳米硅质绝热材料及其制备方法...
  8. Shell 企业29道面试题 [转]
  9. mysql 2018最新补丁_mysql 基础一,续 2018-10-23
  10. Linux export 命令设置环境目录
  11. 5.性能测试工具比较:Jmeter和LR
  12. 对比学习系列论文CPC(一)——CPC概览
  13. win10系统HP打印机驱动程序无法使用
  14. QtQuick 技巧 2
  15. 接口自动化测试框架介绍
  16. 转贴:【游途道标】明帝国曾经拥有的火炮技术到了满清时期已成为可悲的衰落。
  17. 上传文件到OOS服务器
  18. 基于树莓派的手势识别Oled屏幕显示
  19. 通用公司信息安全规范
  20. IDEA Debug出现:Skipped breakpoint at because it happened inside debugger evaluation

热门文章

  1. Springboot简便的配置微信小程序
  2. 炸裂!PDF转Word彻底告别收费时代,这个OCR开源项目要逆天!
  3. 转转支付网关之注解式HTTP客户端
  4. 运用百度框架paddle进行手势识别【动手实践,附源码】
  5. django中的关联查询
  6. 简单xss接收cookie平台的搭建以及xss拿cookie的一些总结
  7. Centos 7安装tig报错:include/tig/tig.h:83:31: fatal error: ncursesw/curses.h: No such file or directory
  8. 【HANA系列】SAP HANA XS Administration Tool登录参数设置
  9. 2022R2移动式压力容器充装考题模拟考试平台操作
  10. 设计模式【2.1】-- 简单工厂模式怎么演变成工厂方法模式?