【微信小程序】—— wxml中使用wx:for时,修改页面中data内数组中的单个值,实现选中效果

本文介绍了如何在微信小程序中使用wx:for指令,并结合前端代码(wxml和wxss)展示如何修改data内的数组值以实现元素的选中和隐藏效果。通过监听点击事件,动态改变isSelect的状态,从而切换小图标的显示。在逻辑部分,作者展示了如何通过数组下标更新数据,以保持界面状态的一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个不算坑,但是为了保证一致性。。题目就这样吧嘿嘿~

未点击时:

点击后:

 

再次点击又会隐藏,只做了第一个,其他相同


前端代码:

使用wx:for,给image的src属性用了三项运算符,当我把isSelect改成true时,前面的小图标换了一下,隐藏的模块用的hidden

wxml:

<!--page/me/setUp/setUp.wxml-->
<view>
  <!-- 修改信息模块 -->
  <view>
    <!--横条-->
    <view  wx:for="{{operation}}" wx:key="text"">
      <view class='stripes' bindtap="choose" data-id="{{item.id}}>
        <image src='{{item.isSelect ? "../../../image/arrow.png": "../../../image/arrowright.png"}}' class='small-icon'></image>
        <text class='stripes-text'>{{item.text}}</text>
      </view>
      <!-- 隐藏模块,点击后显示 -->
      <view hidden='{{!(item.isSelect && item.id == 0)}}'>
        这是隐藏的模块
      </view>

    </view>
  </view>
  <!-- 确认修改 -->
  <!-- <view wx:if='{{user.isLogin}}'>
    <button type='warn' class='log-out' bindtap='logOut'>确认修改</button>
  </view> -->

</view>

wxss:

/* page/me/setUp/setUp.wxss */
/* 横条 */
.stripes {
  display: flex;
  flex-direction: row;
  align-items: center;
  border-bottom: 1rpx solid #eee;
  width: 100%;
  height: 100rpx;
}
/* 横条的文本 */
.stripes-text {
  font-size: 32rpx;
  color: rgb(87, 87, 87);
  margin-left: 50rpx;
}


/* 退出登录按钮 */
.log-out {
  margin-top: 350rpx;
  width: 90%;
}

/* 前面的小图标 */
.small-icon {
  width: 50rpx;
  height: 50rpx;
  margin-left: 30rpx;
}

逻辑: 

我页面中的data是这样的:

  data: {
    operation: [{
      id: 0,
      text: "实名认证",
      isSelect: false
    }, {
      id: 1,
      text: "修改密码",
      isSelect: false
    }, {
      id: 2,
      text: "修改手机号",
      isSelect: false
    }]
  },

下面来看js逻辑:

这里我主要想说的就是修改data中operation数组的单个值,拼串的方式拼出isSelect,然后这里每当点击的时候,都会获取一个id,id就是数组的下标,在setData中每次都赋相反的值。

//选择分类列表
  choose: function(e) {
    var that = this;
    //修改小图标的逻辑
    var id = e.currentTarget.dataset.id;
    var isSelect = 'operation[' + id + '].isSelect';
    that.setData({
      [isSelect]: !that.data.operation[id].isSelect
    });
    
    switch (id) {
      case 0:
        {
          console.log("实名认证");
          // wx.navigateTo({
          //   url: "../login/login",
          // });
          break;
        }
      case 1:
        {
          console.log("修改密码");
          // wx.navigateTo({
          //   url: "serch1/serch1",
          // })
          break;
        }
      case 2:
        {
          console.log("修改手机号");
          // wx.navigateTo({
          //   url: "setUp/setUp",
          // })
          break;
        }
    }

  },

 

 

 


谢谢你看到这里!写作仓促,有疏漏之处还请评论指正,共同探讨进步!


 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值