微信小程序实现循环嵌套数据选择

本文实例为大家分享了微信小程序实现循环嵌套数据选择的具体代码,供大家参考,具体内容如下

一、效果展示

二、代码实现

在.wxml文件中,有时从后台传来的数据可能会出现数组嵌套数组的情况,需要利用wx:for嵌套实现数据的展示。这时,外层循环正常循环,内层循环需要利用wx:for-item将item重新命名。

<scroll-view scroll-y class="scrollTime">
    <view 
        class="dateItem" 
        wx:for="{{serviceTime}}" 
        wx:key="date" 
        wx:for-index="id" 
        data-index="{{index}}">
        <view class="date">
            <text class="dateTxt">{{item.month}}月{{item.day}}日</text>
        </view>
        <view class="time">
            <block wx:for="{{item.timeFrame}}" wx:key="items" wx:for-item="items">
                <view 
                    wx:if="{{items.number !== 0}}"
                    class="{{items.isSelect ? 'timeItem-active' : 'timeItem'}}"
                    data-select-index="{{id}}" 
                    data-attr-index="{{index}}"
                    data-content="{{serviceTime}}"
                    bindtap="bindleTimeItemTap" >
                    <text class="timeTxt">{{items.time}}</text>
                    <view >
                        <text class="numberTxt">剩余:</text>
                        <text class="number">{{items.number}}</text>
                    </view>
                    <view class="selectItem" wx:if="{{items.isSelect}}">
                        <image class="image-select" src="../../../icons/label_select.png"/>
                    </view>
                </view>
                <view wx:else class="timeItem-None">
                    <text class="timeTxt-full">{{items.time}}</text>
                    <text class="numberTxt-full">已满</text>
                </view>
            </block>
        </view>
    </view>
    <view class="scrollViewFooter">
        <text class="footerTxt">没有更多了</text>
    </view>
</scroll-view>

选择某一个数据时,需要在数据对象中添加一个是否选中的字段,将未被选择的数据置false,选择的数据置true,实现选中后样式的更改。

// 假数据结构
let serviceTime = [
    {
        day : 1,
        month : 8, 
        timeFrame : [
            {
                time : '8:00-10:00',
                number : 2,
            },
            {
                time : '10:00-12:00',
                number : 0,
            },
            {
                time : '14:00-16:00',
                number : 2,
            },
        ]
    },
];

Page({
    /**
     * 页面的初始数据
     */
    data: {
        serviceTime : serviceTime,
        selectDay : null,
        selectMonth : null,
        selectTime : null,
    },
    
    /**
     * scroll-view中组件选择点击事件-时间 获取当前选择时间
     */
    bindleTimeItemTap(e) {
        let that = this;
        let selectIndex = e.currentTarget.dataset.selectIndex;
        let attrIndex = e.currentTarget.dataset.attrIndex;
        let content = e.currentTarget.dataset.content;
        var cnt = content.length;
        // 将其他按钮选择状态置false
        for (var i = 0; i < cnt ; i++){
            var count = content[i].timeFrame.length;
            for (var j = 0; j < count; j++) {
                content[i].timeFrame[j].isSelect = false;
            }
        }
        // 将选择的按钮选择状态置true
        content[selectIndex].timeFrame[attrIndex].isSelect = true;
        that.setData({
            serviceTime: content,
            selectDay: content[selectIndex].day,
            selectMonth: content[selectIndex].month,
            selectTime: content[selectIndex].timeFrame[attrIndex].time,
        })
    },
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 微信小程序实现跟随菜单效果和循环嵌套加载数据

    本文实例为大家分享了微信小程序实现跟随菜单效果.微信小程序循环嵌套加载数据,供大家参考,具体内容如下 效果如图: 代码如下: wxml //使用循环嵌套data数据格式写对即可 <scroll-view class="left" scroll-y> <view wx:for="{{left}}" class="leftlist {{index==_click?'yes':''}}" data-i="{{index}}&

  • 微信小程序之前台循环数据绑定

    微信小程序之前台循环数据绑定 微信小程序的循环数据绑定到wxml例: wxml里: <view wx:for="{{array}}"> {{item.message}} </view> 通过上面的wx.for可以绑定一个数组,数组是json类型的:默认的索引序号是item,所以用{{item.message}} 显示数据js里: data: { array: [ { "message": "foot", "txt

  • 微信小程序实现循环嵌套数据选择

    本文实例为大家分享了微信小程序实现循环嵌套数据选择的具体代码,供大家参考,具体内容如下 一.效果展示 二.代码实现 在.wxml文件中,有时从后台传来的数据可能会出现数组嵌套数组的情况,需要利用wx:for嵌套实现数据的展示.这时,外层循环正常循环,内层循环需要利用wx:for-item将item重新命名. <scroll-view scroll-y class="scrollTime">     <view          class="dateItem

  • 微信小程序实现给嵌套template模板传递数据的方式总结

    本文实例总结了微信小程序实现给嵌套template模板传递数据的方式.分享给大家供大家参考,具体如下: 一.template模板调用的数据是单一形态时: indexTemplate模板: <import src="../lookAndCollect-template/lookAndCollect-template.wxml" /> <template name="indexTemplate"> <view class="use

  • 微信小程序实现商品属性联动选择

    本文实例为大家分享了微信小程序实现商品属性联动选择的具体代码,供大家参考,具体内容如下 效果演示: 代码示例 1.commodity.xml <!-- <view class="title">属性值联动选择</view> --> <!--options--> <view class="commodity_attr_list"> <!--每组属性--> <view class="a

  • 微信小程序多列表渲染数据开关互不影响的实现

    最近在学习小程序,正好发现一个问题,微信小程序多列表渲染数据开关怎么互不影响,记录一下,分享给大家 <!--pages/list/list.wxml--> <wxs src="../../utils/filter.wxs" module="filter" /> <view class="list"> <view wx:for="{{list}}" wx:key="{{inde

  • 微信小程序获取循环元素id以及wx.login登录操作

    微信小程序获取循环元素id以及wx.login登录操作 通过点击方法获取循环数据元素的id例: wxml里: <view id="list" wx:for="{{txt}}" > <text id="L_name">{{item.name}}</text> <text id="L_price">¥{{item.price}}/{{item.unit}}</text>

  • 微信小程序 <swiper-item>标签传入数据

    微信小程序 <swiper-item>标签传入数据 在<swiper-item>中用for循环传入多个成对不同数据时的实现方法. 看下效果图: 遍历实现方法:wxss省略: wxml中代码: <!--导航部分轮播图--> <swiper class="navban" indicator-dots="{{indicatorDots}}" interval="{{interval}}" duration=&q

  • 微信小程序实现按字母排列选择城市功能

    实现效果预览 实现思想 利用小程序腾讯地图将所有城市查出来,并将其渲染至页面(https://lbs.qq.com/qqmap_wx_jssdk/index.html)(其中字母栏也根据获取到的数据变化) 其中涉及三个交互(点击字母时滚动到相应位置:滑动触摸字母时,需滚动到相应位置,并有当前哪个字母的提示,且有震动感:手动滑动页面时,需将当前对应的字母选中) 滑动触摸字母时,首先要得到所有字母所在块的高度,再平均的获取到每个字母的高度.当触摸滚动时,拿到pageY(距离文档左上角的距离,具体解释

  • 微信小程序 跳转传递数据的实例

    微信小程序 跳转传递数据的实例 点击view 跳转页面 <view class="album_image" data-album-obj="{{item}}" bindtap="imageclick"> <image style="width:98%;" src="{{item.data[0].url}}"></image> </view> 声明变量  dat

  • 微信小程序后台解密用户数据实例详解

     微信小程序后台解密用户数据实例详解 微信小程序API文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html openId : 用户在当前小程序的唯一标识 因为最近根据API调用https://api.weixin.qq.com/sns/jscode2session所以需要配置以下服务,但是官方是不赞成这种做法的, 而且最近把在服务器配置的方法给关闭了.也就是说要获取用户openid,地区等信息只能在后台获取. 一下是官方的

  • 微信小程序使用slider设置数据值及switch开关组件功能【附源码下载】

    本文实例讲述了微信小程序使用slider设置数据值及switch开关组件功能.分享给大家供大家参考,具体如下: 1.效果展示 2.关键代码 ① index.wxml <view>微信小程序组件:滑动选择器slider</view> <slider bindchange="sliderBindchange" min="{{min}}" max="{{max}}" show-value/> <view>

随机推荐