当前位置:网站首页>微信小程序tab切换时保存checkbox状态
微信小程序tab切换时保存checkbox状态
2022-08-10 00:13:00 【Colesyn L.】
微信小程序tab切换时保存checkbox状态
直接上代码
javascript
//先处理后端返回的数据
//因为我这里是两层所以要 i.list 一层可以直接循环添加checked
let arr = data.data.data;
arr.forEach(i => {
i.show = false;
i.list.forEach(v => {
v.checked = false
})
})
arr[0].show = true;
this.setData({
list: arr })
//切换函数
bannav(e) {
let navid = e.currentTarget.dataset.id;
this.setData({
navid })
this.getData();
//主要是这里
//获取选中的id 和 已有的数据进行比较 然后 将checkd 重新赋值
setTimeout(() => {
this.data.list.forEach(i => {
i.list.forEach(v => {
this.data.selectIds.forEach(t => {
if (v.id == t) {
v.checked = true;
}
})
})
})
this.setData({
list: this.data.list })
}, 500)
},
//复选框选中状态
checkboxChange(e) {
let bigindex = e.target.dataset.bigindex;
let smallIndex = e.target.dataset.smallindex;
const items = this.data.list[bigindex].list;
const values = e.detail.value;
let carr = this.data.selectIds
//选中
if (values.length) {
let cid = items.findIndex(v => v.id == values[0]);
let T = `list[${
bigindex}].list[${
cid}].checked`;
this.setData({
[T]: !this.data.list[bigindex].list[smallIndex].checked
})
carr.push(...values)
this.setData({
selectIds: carr })
} else {
//取消选中
let T = `list[${
bigindex}].list[${
smallIndex}].checked`;
this.setData({
[T]: false
})
let ids = [this.data.list[bigindex].list[smallIndex].id.toString()]
let lists = carr.filter(items => {
if (!ids.includes(items)) return items
})
this.setData({
selectIds: lists })
}
},
html
//第一层
<view class="list" wx:for="{
{list}}" wx:key="index">
<view class="list-title" bindtap="go_view" data-name="{
{item.name}}">
<view>{
{
item.name}}</view>
<image src="../../images/down.png"></image>
</view>
<block wx:if="{
{item.show}}">
//第二层
<view class="list-item" wx:for="{
{item.list}}" wx:key="index" wx:for-index="childindex">
<checkbox-group data-bigindex="{
{index}}" data-smallIndex="{
{childindex}}" bindchange="checkboxChange" style="display: flex;">
<label class="checkbox">
<checkbox value="{
{item.id}}" checked="{
{item.checked}}" />
</label>
<view class="checkbox-items">{
{
item.content}}</view>
</checkbox-group>
</view>
</block>
</view>
边栏推荐
猜你喜欢
有PEG-Biotin参与的(CAS:1778736-18-7)Biotin-PEG4-OH广泛用于分子靶点检测
Enhanced Deep Residual Networks for Single Image Super-Resolution
Web性能测试模型小结
C language pointer practice questions
【「收藏」Oracle 数据库安装】
Docker 面试题2则--取数据库连接数和docker-compose
365天挑战LeetCode1000题——Day 052 逐步求和得到正数的最小值 贪心
CVPR22 Oral|通过多尺度token聚合分流自注意力,代码已开源
03|Process Control
服装店管理系统如何推送活动?
随机推荐
Biotin-Cy2 Conjugate,生物素-Cy2 偶联物_Cy2 生物素偶联物
将string类对象中的内容格式化到字符串Buffer中时遇到的异常崩溃分析
XSS高级 svg 复现一个循环问题以及两个循环问题
XSS详解及复现gallerycms字符长度限制短域名绕过
小程序实现搜索功能续
FITC标记生物素(FITC-生物素|CAS:134759-22-1)有哪些知识了?
即时通讯开发如何撸一个WebSocket服务器
删除表空间数据文件
assert利用蚁剑登录
Data storage - the C language
c语言指针练习题
游泳馆系统次卡的设置有哪些细节?
Leetcode83. 删除排序链表中的重复元素
How to activate the payment function on WeChat official account?
Involved in PEG-Biotin (CAS: 1778736-18-7) Biotin-PEG4-OH is widely used in molecular target detection
关于HBuilder X鼠标变为_ 替换字符的问题
-Vector Dot Product-
收银管理软件如何做好员工管理?
西安生物素-四聚乙二醇-酰胺-4苯酚 浅黄色半固态
What should I do if there is no sound after reinstalling the system in win10?