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

        微信小程序用 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 的数组。然后,当你点击或触发事件时,可以通过解析这个数组来获取这两个索引值。结果如下:

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java之面向对象2笔记

1 接口(interface) 1.1 概述 接口&#xff08;Interface&#xff09;在计算机科学中&#xff0c;特别是在面向对象编程&#xff08;OOP&#xff09;中&#xff0c;是一个重要的概念。它定义了一组方法的规范&#xff0c;但没有实现这些方法的具体代码。接口的主要目的是确保类…

介绍Linux

目录 1.什么是操作系统 2.现实生活中的操作系统 3.操作系统的发展史 4.操作系统的发展 Linux的不同版本以及应用领域 1.Linux内核及发行版介绍 <1>Linux内核版本 <2>Linux发行版本 2.应用领域 个⼈桌⾯领域的应⽤ 服务器领域 嵌⼊式领域 3.文件和目录 …

Pulsar 社区周报 | No.2024-06-07 | Apache Pulsar 新分支 3.3 版本发布

“ 各位热爱 Pulsar 的小伙伴们&#xff0c;Pulsar 社区周报更新啦&#xff01;这里将记录 Pulsar 社区每周的重要更新&#xff0c;每周发布。 ” 本期主题&#xff1a;Apache Pulsar 新分支 3.3 版本发布 Apache Pulsar 新分支 3.3 版本发布&#xff1a;Apache Pulsar 3.3.0[1…

2024屈原故里端午文化节开幕

6月7日&#xff0c;“中国端午诗意宜昌”2024屈原故里端午文化节在宜昌市秭归县屈原广场盛大开幕。相关嘉宾、屈氏后裔、华商侨商及外资企业代表、主流媒体代表和当地民众聚首屈原祠前&#xff0c;缅怀诗祖屈原&#xff0c;共襄端午盛典。 本届屈原故里端午文化节由湖北省人民政…

【SQLAlChemy】filter过滤条件如何使用?

filter 过滤条件 生成 mock 数据 # 创建 session 对象 session sessionmaker(bindengine)()# 本地生成mock数据 for i in range(6):# 生成随机名字, 长度为4到7个字符name .join(random.choice(string.ascii_letters) for _ in range(random.randint(4, 7)))# 生成随机年龄…

Lua搭建网站后台教程

本文讲解如何使用二进制发布包和FastWeb网站管理工具搭建站点 FastWeb网站管理工具 使用该工具可快速在Windows平台部署。支持官方或三方模块的自动安装、日志调试、版本更新等。 1、下载最新版本压缩包 2、解压到任意目录(建议英文) 3、运行 ①点击 [设置]->[安装] 部…

IO进程线程(八)线程(pthread_t)

文章目录 一、线程(LWP)概念二、线程相关函数&#xff08;一&#xff09;创建 pthread_create1. 定义2. 使用&#xff08;不传参&#xff09;3. 使用&#xff08;单个参数&#xff09;4. 使用&#xff08;多个参数&#xff09;5. 多线程执行的顺序6. 多线程内存空间 &#xff0…

BUUCTF---web---[GYCTF2020]Blacklist

1、来到题目连接页面 2、测试单引号和双引号&#xff0c;单引号报错&#xff0c;双引号没报错 1 1" 3、使用万能句式 4、使用堆叠注入测试&#xff0c;查看数据库名 1;show databases;# 5、查看表名 1;show tables;# 6、查看FlagHere中字段名 1;show columns from FlagH…

Python | Leetcode Python题解之第143题重排链表

题目&#xff1a; 题解&#xff1a; class Solution:def reorderList(self, head: ListNode) -> None:if not head:returnmid self.middleNode(head)l1 headl2 mid.nextmid.next Nonel2 self.reverseList(l2)self.mergeList(l1, l2)def middleNode(self, head: ListNo…

Webpack 从入门到精通-基础篇

一、webpack 简介 1.1 webpack 是什么 webpack 是一种前端资源构建工具&#xff0c;一个静态模块打包器(module bundler)。 在 webpack 看来, 前端的所有资源文件(js/json/css/img/less/...)都会作为模块处理。 它将根据模块的依赖关系进行静态分析&#xff0c;打包生成对应的…

CA证书及PKI

文章目录 概述非对称加密User Case: 数据加密User Case: 签名验证潜在问题 CACA证书的组成CA签发证书流程CA验证签名流程CA吊销证书流程 PKI信任链证书链 概述 首先我们需要简单对证书有一个基本的概念&#xff0c;以几个问题进入了解 ❓ Question1: 什么是证书&#xff1f; 证…

数据可视化——pyecharts库绘图

目录 官方文档 使用说明&#xff1a; 点击基本图表 可以点击你想要的图表 安装&#xff1a; 一些例图&#xff1a; 柱状图&#xff1a; 效果&#xff1a; 折线图&#xff1a; 效果&#xff1a; 环形图&#xff1a; 效果&#xff1a; 南丁格尔图&#xff08;玫瑰图&am…

Mysql的InnoDB介绍

目录 show engines查看搜索殷勤&#xff0c;默认InnoDB。 Mysql为什么使用InnoDB作为默认存储引擎 InnoDB主要包括内存结构和磁盘结构 内存结构包含: 磁盘结构中包括: 为什么设计成内存结构和磁盘结构两部分 使用InnoDB存储引擎创建的表&#xff0c;对应的数据文件在哪里…

Android14之向build.prop添加属性(二百一十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+AOSP…

uniapp原生插件开发实战——集成Android端的Twitter登陆

Android集成Twitter登陆的官方教程:https://github.com/twitter-archive/twitter-kit-android/wiki 项目创建 首先可以先看下uniapp原生插件开发教程 uniapp原生插件类型分为两种: Module模式:能力扩展,无嵌入窗体的UI控件,类似于功能插件。Component模式:在窗体中内嵌…

php 混合xml js,html 代码报错 ,结束标签关闭, short_open_tag 的作用,php关闭文件结束判断

结束标签关闭, short_open_tag 的作用&#xff0c;php关闭文件结束判断 有时候我们我们会将php&#xff0c;xml&#xff0c;js&#xff0c;html 混合编写 php文件只要开始标签而不要结尾标签? 混合代码看代码 直接运行 yntax error, unexpected version (T_STRING) in php…

STM32智能家居项目esp8266上云OneNet【附源码+详细教程】

目录 一、硬件选材 二、OneNet使用教程 三、代码修改教程 四、添加数据流方法 五、项目工程&#xff08;源码元件清单教程&#xff09; 小白也能做&#xff0c;项目工程在后文可下载。 一、硬件选材 二、OneNet使用教程 拿到代码后肯定是连不上网的&#xff0c;因为源码…

Android.基本用法学习笔记

设置文本的内容 先在strings.xml声明变量 方法1. 方法2. 设置文本的大小 1.单位dp&#xff0c;大家可以去学一下有关的单位换算 2. 设置文本颜色 1. 2. 4.设置文本背景颜色 1. 2. 设置视图的宽高 与上级视图一致&#xff0c;也就是上一级有多宽就有多少 1. 2. 3. 4. 设置视图…

生成式人工智能重置:从初期热潮到战略扩展

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

cs61C | lecture4

cs61C | lecture4 C 语言内存布局 ### Stack 在最顶部&#xff0c;向下增长。包含局部变量和 function frame information。 > Each stack frame is a contiguous block of memory holding the local variables of a single procedure. > A stack frame includes: > …