微信小程序双层/多层 wx:for 循环嵌套,关于内外层的 index 和 item ;data-index 传递两个参数

news2025/2/25 20:30:12

        微信小程序用 wx:for 循环可以快速将后端 js 的数组快速显示到前端;

        那假如数组中嵌套数组;就存在内外层两层及以上的多层嵌套循环了。

        那么如果两层的嵌套式循环 index 究竟是属于哪一层呢?item 又属于哪一个呢?

        

<view>
    <view wx:for="{{questList}}" wx:key="index">
        <view bindtap="showContent" data-index="{{index}}">
            {{index}} {{item.title}}
        </view>
        <view>
            <checkbox-group  wx:for="{{item.items}}">
                <view>
                    <checkbox checked="{{item.checked}}" />
                    {{index}}{{item}}
                    <text>{{item.name}}</text>
                </view>
            </checkbox-group>
        </view>
    </view>
</view>

        我在这里使用的是 checkbox 复选框,下面是 js 中的内容数据

data: {
        questList: [{
          title: 'Q.问题',
          items: [
            { name: '美国',checked:false},
            { name: '中国',checked:true},
            { name: '巴西',checked:false},
            { name: '日本',checked:false},
            { name: '英国',checked:false},
            { name: '法国',checked:false}
          ]
        }, {
          title: 'Q.问题',
          items: [
            { name: '美国',checked:false},
            { name: '中国',checked:true},
            { name: '巴西',checked:false},
            { name: '日本',checked:false},
            { name: '英国',checked:false},
            { name: '法国',checked:false}
          ]
        }],
    },

这个数据有两层嵌套的数组数据了。

        最直接的两侧嵌套循环显示就完成了;

        那么关于内外层的 index 下标关系:在默认情况下,这个第二层的循环也是用 index 作为下标;并且直接覆盖第一层的 index ;也就是说如果你是在第二层循环中输出 {{index}} 那么这个输出的是第二层的下标值;如果说你是在第一层循环中输出 {{index}} 那就是第一层的下标值;

        同样 item 也是同理;若只是这样没有重新定义;item 也和 index 同理,在不同的循环层中会覆盖不同的 item 值。

        那么如果规范化的话:通常会选择重新定义一个 key 、index、item 用以区分开不同的循环下表和内容;(当然,你不重新定义也是可以的,也不会报错,用起来还省事)

        首先定义一个新的 key 

<view>
    <view wx:for="{{questList}}" wx:key="index">
        <view bindtap="showContent" data-index="{{index}}">
            {{index}} {{item.title}}
        </view>
        <view wx:if="{{item.folding}}">
            <checkbox-group wx:for="{{item.items}}" wx:key="pancan">
                <view>
                    <checkbox checked="{{item.checked}}" />
                    {{index}}{{pancan}}
                    <text>{{item.name}}</text>
                </view>
            </checkbox-group>
        </view>
    </view>
</view>

        其实这个 key 还是写一下吧;不写的话不会爆红错误;但是会有黄色的提示老是弹出来。

        在 wx:for 循环中,应该使用 wx:for-item 来指定当前项的变量名。在第二次循环中,如果你希望使用 pancan 作为下标值,而不是继续使用外部循环的 index。为了做到这一点,你需要在内部循环中使用另一个变量来表示内部下标。在代码中使用 innerIndex 作为新的内部循环的下表。

<view>
    <view wx:for="{{questList}}" wx:key="index">
        <view bindtap="showContent" data-index="{{index}}">
            {{index}} {{item.title}}
        </view>
        <view wx:if="{{item.folding}}">
            <checkbox-group wx:for="{{item.items}}" wx:key="pancan" wx:for-item="pancan" wx:for-index="innerIndex">
                <view>
                    <checkbox checked="{{pancan.checked}}" />
                    {{innerIndex}}{{pancan}}
                    <text >{{pancan.name}}</text>
                </view>
            </checkbox-group>
        </view>
    </view>
</view>

        现在,通过使用 wx:for-item="pancan"pancan 变量将包含当前项的值。内部循环将使用 innerIndex 作为下标值,而不是外部循环的 index

        

        wx:for-item="pancan"这个是什么用的呢? wx:key="pancan" 这个又是什么用的呢?🤔

  wx:for-item 是一个指定循环中单个项目变量名称的属性。当你在 wx:for 中循环列表时,它告诉小程序哪个变量名代表列表的当前项目。这样你就可以使用这个变量来访问每个循环项目的属性。

        例如,如果你指定 wx:for-item="pancan",那么在循环中,每个项目就会被命名为 pancan。这使你能够引用项目的属性,例如 pancan.namepancan.checked。通过 wx:for-item,你可以确保循环中的每个项目都有一个唯一的标识符。

   wx:key 是用来标识循环项目的属性。它的主要作用是告诉小程序每个循环项目的唯一标识符,这样小程序在重新渲染或进行 DOM 操作时可以优化性能。如果没有指定 wx:key,可能会导致小程序每次重新渲染整个列表,这可能会影响性能。

        通过为 wx:for 设置 wx:key,你可以告诉小程序用哪个字段来唯一标识循环中的每个项目。例如,设置 wx:key="pancan" 时,表示小程序会将 pancan 的值作为循环项目的唯一标识符,从而在需要重新渲染或更新时提高效率。

        那么双层循环遍历读取数组的就完美完成了。你可以分别读取她们的下表和值。

        

        如果我还想将数据通过点击的方法跳转到方法,并将数据给到方法中处理。那么可以使用 data-index 

<checkbox-group bindchange="onCheckboxChange"  wx:for="{{item.items}}" wx:key="innerIndex" wx:for-index="innerIndex" wx:for-item="innerItem" data-index="{{index}}">

        使用 data-index 可以将 index 等各类数据传递到给方法中;

        🙋:那我要两个值呢?

        额........🤔

        这个也没问题;同样可以用 data-index 可以将多个数据传递。如下:

<checkbox-group bindchange="onCheckboxChange"  wx:for="{{item.items}}" wx:key="innerIndex" wx:for-index="innerIndex" wx:for-item="innerItem" data-index="{{[index, innerIndex]}}">

           那么接收到的数据就如下:0是第一层循环的下表,1是第二层循环的下标。在这个例子中,我将 data-index 设置为一个包含外部索引 index 和内部索引 innerIndex 的数组。然后,当你点击或触发事件时,可以通过解析这个数组来获取这两个索引值。结果如下:

        如果文章对你有帮助,记得 点赞、收藏、关注👍⭐🧧

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【优选算法】详解target类求和问题(附总结)

目录 1.两数求和 题目&#xff1a; 算法思路&#xff1a; 代码&#xff1a; 2.&#xff01;&#xff01;&#xff01;三数之和 题目 算法思路&#xff1a; 代码&#xff1a; 3.四数字和 题目&#xff1a; 算法思路&#xff1a; 代码&#xff1a; 总结&易错点&…

Java实现物候相机和植被分析导出相对指数成果图

一、基础概念 植被分析是利用地理信息系统&#xff08;GIS&#xff09;、遥感技术、生态学、环境科学等多学科交叉手段&#xff0c;对植被的分布、类型、结构、组成、动态变化、生产力、生态功能进行量化评估的过程。植被分析对于生态保护、生物多样性研究、资源管理、环境监测…

交易中的群体行为特征和决策模型

本文基于人的行为和心理特征&#xff0c;归纳出交易中群体的行为决策模型&#xff0c;并基于这个模型&#xff0c;分析股价波浪运行背后的逻辑&#xff0c;以及投机情绪的周期变化规律&#xff0c;以此指导交易&#xff0c;分析潜在的风险和机会&#xff0c;寻找并等待高性价比…

stm32MP135裸机编程:修改官方GPIO例程在DDR中点亮第一颗LED灯

0 参考资料 轻松使用STM32MP13x - 如MCU般在cortex A核上裸跑应用程序.pdf 正点原子stm32mp135开发板&原理图 STM32Cube_FW_MP13_V1.1.0 STM32CubeIDE v1.151 需要修改那些地方 1.1 修改LED引脚 本例使用开发板的PI3引脚链接的LED作为我们点亮的第一颗LED灯&#xff0c;…

教育的数字化转型——Kompas.ai如何变革学习体验

引言 在现代教育中&#xff0c;数字化转型逐渐成为提升学习效果的重要手段。随着科技的进步&#xff0c;人工智能&#xff08;AI&#xff09;在教育领域的应用越来越广泛。本文将探讨教育数字化转型的发展趋势&#xff0c;并介绍Kompas.ai如何通过AI技术变革学习体验。 教育数…

金融量化分析开源工具:TuShare

TuShare&#xff1a;一站式金融数据解决方案&#xff0c;让量化分析触手可及- 精选真开源&#xff0c;释放新价值。 概览 TuShare&#xff0c;是Github社区上一个专为金融量化分析师和数据爱好者设计的开源工具&#xff0c;提供了从数据采集、清洗加工到数据存储的全流程服务。…

element-plus的el-space标签的使用

el-space标签可以很方便的设置标签间距和分隔符&#xff0c;对齐方式&#xff0c;是否拆行等属性。 <script setup lang"ts"> import { onMounted, ref } from vue;const sizeref(30)</script><template><el-space wrap :size"size"…

Redis实战宝典:基础知识、实战技巧、应用场景及最佳实践全攻略

背景 在Java系统实现过程中&#xff0c;我们不可避免地会借助大量开源功能组件。然而&#xff0c;这些组件往往功能丰富且体系庞大&#xff0c;官方文档常常详尽至数百页。而在实际项目中&#xff0c;我们可能仅需使用其中的一小部分功能&#xff0c;这就造成了一个挑战&#…

c语言编程

1. 2。 int main(int argc, const char *argv[]) { int year,month,day; int result0; printf("请输入&#xff1a;"); scanf("%d/%d/%d",&year,&month,&day); if(month>12||month<1) { printf("error \n"); return 0; } s…

解决Vue项目Network: unavailable的问题

在vscode使用 npm run serve 运行 Vue项目时发现一个问题&#xff0c;项目只能通过Local访问而不能通过Network访问&#xff0c;终端显示如下&#xff1a; 碰到这种情况的解决方法&#xff1a;在环境变量的path中添加“C:\Windows\System32\Wbem” 1.找到“环境变量”&#xf…

算法题目学习汇总

1、二叉树前中后序遍历:https://blog.csdn.net/cm15835106905/article/details/124699173 2、输入一棵二叉搜索树&#xff0c;将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点&#xff0c;只能调整树中结点指针的指向。 public class Solution {private Tr…

Leetcode881. 救生艇

Every day a Leetcode 题目来源&#xff1a;881. 救生艇 解法1&#xff1a;贪心 排序 双指针 排序后&#xff0c;使用双指针分别指向数组首尾&#xff0c;每次取两个指针指向的元素之和与 limit 比较&#xff0c;如果小于等于 limit&#xff0c;则两个指针同时向中间移动一…

express入门01服务器搭建以及get和post请求的监听

微搭提供了后端API的能力&#xff0c;但是不同的版本收费差别巨大&#xff0c;因为使用的门槛限制了中小企业使用低代码平台。那可不可以既要又要呢&#xff1f;答案是肯定的&#xff0c;那其实掌握一定的后端框架&#xff0c;借助我们在低代码中已经熟练掌握的技能其实是比较容…

rust asyn和await pin unpin加精!!!

15-探讨为什么Pin在Rust异步编程中如此重要 | Databend_哔哩哔哩_bilibili 能不能Pin住&#xff0c;取决于T是否实现了Unpin&#xff0c;如果实现了Unpin&#xff0c;那么Pin不住 Pin不能pin住u32等基础变量 编译器为async和await生成结构体实现了!Unpin 结构体中使用引用要…

Hexo+Github搭建个人博客教程

hexo官网&#xff1a;https://hexo.io/zh-cn/ butterfly 主题设置&#xff1a;https://butterfly.js.org/ GitHub地址&#xff1a;https://github.com/jerryc127/hexo-theme-butterfly 基础命令 初始化博客命令&#xff1a;hexo init “文件名” 开启本地服务&#xff08;本…

重温共射放大电路

1、放大概念 小功率信号变成一个大功率信号&#xff0c;需要一个核心器件做这件事&#xff0c;核心器件的能量由电源提供&#xff0c;通过核心器件用小功率的信号去控制大电源&#xff0c;来实现能量的转换和控制&#xff0c;前提是不能失真&#xff0c;可以用一系列正弦波进行…

[大模型]GLM-4-9B-Chat WebDemo 部署

环境准备 在autodl平台中租一个4090等24G显存的显卡机器&#xff0c;如下图所示镜像选择PyTorch–>2.1.0–>3.10(ubuntu22.04)–>12.1 接下来打开刚刚租用服务器的JupyterLab&#xff0c; 图像 并且打开其中的终端开始环境配置、模型下载和运行演示。 pip换源和安装…

服务部署:使用docker部署开源Xxl-Job任务调度平台项目

一、项目构建 1、从gitee上下载源码&#xff1a;xxl-job: 一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线&#xff0c;开箱即用。https://gitee.com/xuxueli0323/xxl-job 2、本地使用…

征信受损,别再犯傻!

听说你的征信出了点小问题&#xff1f;别急&#xff0c;这事儿说大不大&#xff0c;但也不能掉以轻心。征信&#xff0c;说白了就是你借钱还钱的记录本&#xff0c;一旦它“花”了&#xff0c;借钱可就没那么轻松了。 先来说说这征信“花”了是咋回事 征信“花”了&#xff0c…

三高系统的架构设计方案:高并发、高可用、高性能

文章目录 一、互联网系统三高概述1、互联网的三高2、高并发3、高可用4、高性能 二、高并发、高性能技术解决方案1、多高的并发才算高并发&#xff1f;2、水平扩展3、负载均衡思想4、缓存思想5、池化复用思想6、异步思想7、预处理-惰性更新思想8、分而治之思想 三、高可用技术解…