当前位置:网站首页>微信小程序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>
边栏推荐
猜你喜欢

C language structure, function and pointer exercise (simple address book)

生物素叠氮化物中的(CAS:1527486-16-3TAMRA-azide-PEG3-Biotin)反应的特点!

03|流程控制

Xi'an biotin-tetrapolyethylene glycol-amide-4phenol light yellow semi-solid

2022金九银十工作潮,怎么样才能成功跳槽面试拿到高薪呢?

ASEMI整流桥GBJ1010参数,GBJ1010规格,GBJ1010封装

Penetration Testing and Offensive and Defense Confrontation - Vulnerability Scanning & Logic Vulnerability (Part1)

02|运算符

Mysql数据库 ALTER 基本操作

Characteristics of the (CAS:1527486-16-3TAMRA-azide-PEG3-Biotin) reaction in biotin azide!
随机推荐
阿里云混合云管理平台多Region架构
-red and black-
2022金九银十工作潮,怎么样才能成功跳槽面试拿到高薪呢?
What should I do if there is no sound after reinstalling the system in win10?
Interlay集成至Moonbeam,为网络带来interBTC和INTR
开发IM即时通讯容易吗?需要什么技术
宽带由20M换为100M
labelme标注的json标签转txt格式
JVM :运行时数据区-虚拟机栈
-Chess game-
足不出户也能看星空
你有对象类,我有结构体,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang结构体(struct)的使用EP06
Docker 面试题2则--取数据库连接数和docker-compose
XSS高级 svg 复现一个循环问题以及两个循环问题
GBJ1510-ASEMI机器人电源整流桥GBJ1510
基于Web的疫情隔离区订餐系统
你有对象类,我有结构体,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang结构体(struct)的使用EP06
Leetcode81. 搜索旋转排序数组 II
ITK编译remote库
R语言使用glm函数构建逻辑回归模型(logistic)、使用subgroupAnalysis函数进行亚组分析并可视化森林图