(一)单选按钮组

模型图如下:

index.js

Page({data: {parameter: [{ id: 1, name: '银色' }, { id: 2, name: '白色' },{ id: 3, name: '黑色' }],//模拟商品参数数据,如果是线上版本需要自行发起request请求
  },onLoad: function (options) {this.data.parameter[0].checked = true;this.setData({parameter: this.data.parameter,})//默认parameter数组的第一个对象是选中的
  },// 参数点击响应事件parameterTap:function(e){//e是获取e.currentTarget.dataset.id所以是必备的,跟前端的data-id获取的方式差不多var that=thisvar this_checked = e.currentTarget.dataset.idvar parameterList = this.data.parameter//获取Json数组for (var i = 0; i < parameterList.length;i++){if (parameterList[i].id == this_checked){parameterList[i].checked = true;//当前点击的位置为true即选中
      }else{parameterList[i].checked = false;//其他的位置为false
      }}that.setData({parameter: parameterList})}
})

index.wxml

<view class='fwb fz-28 mgt-16 mgb-10'>规格</view><view class='parameter-wrap'><block wx:for="{{parameter}}" wx:key="parameter"><text class='parameter-info text-over {{item.checked?"checked_parameter":""}}' data-id='{{item.id}}' bindtap='parameterTap'>{{item.name}}</text></block></view>

index.wxss

.checked_parameter{background: rebeccapurple;padding: 3px;border-radius: 5px;color: #fff;
}

Tips:此处的{{item.checked?”checked_parameter”:”“}}为三元选择器,即通过checked判断当前是否为选中样式,而后进行样式的添加checked_parameter。

(二)多选按钮组

模型图如下:

cartList.js

Page({data:{CartList:[],//做空处理,如果购物车为空后端的值没有改变,容易产生报错  //测试数据:CartList: [{id: 1, name: '银色', checked: false},{id: 2, name: '白色', checked: false},{id: 3, name: '黑色', checked: true}]
    },onLoad: function () {// 获取购物车请求var that = this;wx.request({url: request_getCartList,//向后端发起请求,此处的是get的方式,如需要ajax请参照本站内的相关文章
      data: {"session3rd": userid,},success: function (res) {if (res.data.code == -2) {that.setData({CartList: []})}if(res.data.code==1){that.setData({CartList: list})}}})},// 多选chooseOs: function (event) {for (var i = 0; i < this.data.CartList.length; i++) {if (event.currentTarget.id == this.data.CartList[i].id) {if (this.data.CartList[i].checked == true) {this.data.CartList[i].checked = false;var CartList = this.data.CartList;this.setData({CartList//重定义CartList,使购物车的样式实现局部刷新
          })} else {this.data.CartList[i].checked = true;var CartList = this.data.CartList;this.setData({CartListt//重定义CartList,使购物车的样式实现局部刷新
          })}}}},
})

cartList.wxml

  <block wx:for="{{CartList}}" wx:key=""><view class="order-out user-shadow mgb-20 nowrap"><view class="check-btn" catchtap='chooseOs' id="{{item.id}}"><image class="absoult-v" src="{{imgSrc}}{{item.checked?'type_1':'type_0'}}.png" mode="widthFix"></image></view></view></block>

Tips:前端页面通过catchtap的事件捕捉的方式,调用chooseOs的方法,获取当前点击对象的id即id=”{{item.id}}”,然后对选中的事件添加样式this.data.CartList[i].checked = true;,对未选中的事件删除样式this.data.CartList[i].checked = false;

(三)复选拓展-全选全不选

cart.xml

 <view class="all-btn" bindtap='allCheckTap' wx:if="{{!checked}}"><image src="{{imgSrc}}{{checked?'type_1':'type_0'}}.png" mode="widthFix"></image><text>全选</text></view><view class="all-btn" bindtap='allCheckTap' wx:if="{{checked}}"><image src="{{imgSrc}}{{checked?'type_1':'type_0'}}.png" mode="widthFix"></image><text>全不选</text></view>

Tips:此处的‘全选’和‘全不选’没有合并,需要小码农们自行整合。

cartList.js

// 全选按钮allCheckTap: function () {this.setData({checked: !this.data.checked,})if (this.data.checked) {for (var i = 0; i < this.data.CartList.length; i++) {if (this.data.CartList[i].checked !== true) {this.data.CartList[i].checked = true;var CartList = this.data.CartList;this.setData({CartList})}}}else {for (var i = 0; i < this.data.CartList.length; i++) {if (this.data.CartList[i].checked == true) {this.data.CartList[i].checked = false;var CartList = this.data.CartList;this.setData({CartList})}}}},

tips:全选跟全部不选的逻辑比较简单就是,将所有所有的checked循环遍历this.data.CartList[i].checked == true或false,然后通过this.setData({CartList})重新定义一下,实现局部刷新。

转 : https://blog.csdn.net/qq_38209578/article/details/78810981

微信小程序 自定义单选复选按钮组的实现(用于实现购物车产品列表功能)相关推荐

  1. 微信小程序自定义showModel为转发按钮

    效果图 布局 wxml <view class='goods-detail-m' wx:if='{{isShowModel}}'><view class="mask-m&q ...

  2. 微信小程序实现单选、全选功能

    前言概述 本文介绍微信小程序实现单选.全选功能,效果如下: 实现过程 1.先实现页面效果,文件*.wxml和*.wxss代码如下: <view class="container&quo ...

  3. 微信小程序radio单选框如何修改宽高及选中样式

    之前写过关于多选框设置样式的办法,其实与单选框设置的方法一样,唯一不同的是,在css样式里,/* 选中后的 背景样式 (红色背景 无边框 可根据UI需求自己修改) */的下面定义的css需要加上!im ...

  4. 微信小程序—自定义(城市选择)弹窗组件,将弹窗组件的值传给调用页面并显示(图文)

    微信小程序-自定义(城市选择)弹窗组件,并传值 1.新建component文件夹用来存放自定义组件,并在其文件夹内新建cityModal Component,注意不是新建Page 新建完成之后出现四个 ...

  5. 微信小程序自定义授权弹框

    微信小程序自定义授权弹框 最近微信获取用户信息的接口有调整,就是这货:wx.getUserInfo(OBJECT),文档描述如下: 此接口有调整,使用该接口将不再出现授权弹窗,请使用 <butt ...

  6. 微信小程序如何隐藏右上角分享按钮

    2019独角兽企业重金招聘Python工程师标准>>> 一.微信小程序右上角有个转发按钮 可以分享转发当前页面到群或者微信好友. 右上角胶囊按钮>转发 转发可以配置转发是路径参 ...

  7. 微信小程序自定义导航栏(带汉堡包菜单)

    微信小程序自定义导航栏(带汉堡包菜单) 1.在app.json中 window配置navigationStyle (如果单独页面使用,可在页面的json文件配置) 2.计算相关值 整个导航栏的高度: ...

  8. php 微信创建客服,如何给微信小程序内添加客服按钮

    这次给大家带来如何给微信小程序内添加客服按钮,给微信小程序内添加客服按钮的注意事项有哪些,下面就是实战案例,一起来看一下. 1. 普通客服按钮添加客服-联系我们 2. 悬浮客服按钮添加,图片自定义 大 ...

  9. 微信小程序-自定义导航栏及返回上一级页面的实现

    一.参考文章 1.微信小程序自定义navigationBar 2.微信小程序返回上一级页面的实现代码 3.小程序开发--常用布局 二.需求 在导航栏中需要显示信息的"未读数量",所 ...

最新文章

  1. Learning Perl(Perl语言入门)学习笔记(3)
  2. 我的第一个React Native App
  3. 套接字没有连接并且没有提供地址_网络是怎样连接的 -- web服务器接到请求后将会做什么...
  4. 大数据架构师训练营学习笔记
  5. 【代码示例】springboot使用drools实现动态规划
  6. Openwrt中luci配置页面cbi小记
  7. eventbus多个订阅_番石榴的EventBus –简单的发布者/订阅者
  8. 设计模式_第二篇_策略模式
  9. Koa框架教程,Koa框架开发指南,Koa框架中文使用手册,Koa框架中文文档
  10. Ajax控件和类库简析
  11. 进入传奇荣耀显示服务器不存在,传奇荣耀————【合区】5月10日合区公告
  12. Nginx与tomcat组合的简单使用
  13. ZPL效果在线打印测试和相关手册及编程语言资料
  14. python 余弦值_余弦相似度
  15. python lncrna_使用CPAT分析lncRNA
  16. 微信小程序之电子商场的设计以及实现
  17. Ps 初学者教程「61」如何在图片中创建霓虹灯效果?
  18. mumu模拟器网络问题相关处理
  19. 转载05:全能程序员学习路线
  20. ODPS上下文参数的使用

热门文章

  1. 大数据的应用难题:是否该建立数据公地
  2. 再论JavaScript原型继承和对象继承
  3. 深入学习QWidget-1
  4. 提高 Android 代码质量的4个工具
  5. 函数指针与指针函数的区别
  6. JQuery实现点击TreeView文本展开/折叠子节点
  7. 用C#编写ActiveX控件(三) 转载
  8. 洛谷——P2035 iCow
  9. 详解SQL中的触发器
  10. SSH 远程执行任务