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

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

未点击时:

 

点击后:

再次点击又会隐藏


前端代码:

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

wxml:

 <view>
  <!-- 修改信息模块 -->
  <view>
    <!--横条-->
    <view class='stripes' wx:for="{{operation}}" wx:key="text" 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 hidden='{{!item.isSelect}}'>
        这是隐藏的模块
      </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;
        }
    }

  },

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


猜你喜欢

转载自blog.csdn.net/LimonSea/article/details/81780331