微信小程序——列表项实现单选功能

此代码示例展示了如何在微信小程序中使用`<radio-group>`和`<scroll-view>`实现选项滚动选择。当用户选择一个选项时,程序会更新所有选项的选中状态,并将视图滚动到所选选项。`radioChange`函数处理选择事件,`deviceList`包含了选项数据。

实现的需求如下:
在这里插入图片描述
index.wxml:

<view class="container">
  <scroll-view scroll-y="true" style="height:100vh;overflow:hidden;background-color:#fff;" scroll-into-view="{{toView}}"
    scroll-top="{{scrollTop}}">
    <radio-group bindchange="radioChange">
      <label wx:for="{{deviceList}}" wx:key="value" class="device-list">
        <view>{{item.name}}</view>
        <view>
          <radio value="{{item.value}}" checked="true" />
        </view>
      </label>
    </radio-group>
  </scroll-view>
</view>

index.wxss:

.container{
  width: 100vw;
  height: 100vh;
}

.device-list{
  box-sizing: border-box;
  padding: 26rpx 6%;
  display: flex;
  justify-content: space-between;
  align-items: center;
  border-bottom: 1px solid #eee;
}

index.js:

Page({
  data:{
    deviceList:[
      {value: 'USA', name: '美国'},
      {value: 'CHN', name: '中国', checked: 'true'},
      {value: 'BRA', name: '巴西'},
      {value: 'JPN', name: '日本'},
      {value: 'ENG', name: '英国'},
      {value: 'FRA', name: '法国'},
    ]
  },
  radioChange(e) {
    console.log('radio发生change事件,携带value值为:', e.detail.value)

    const deviceList = this.data.deviceList
    for (let i = 0, len = deviceList.length; i < len; ++i) {
      deviceList[i].checked = deviceList[i].value === e.detail.value
    }

    this.setData({
      deviceList
    })
  }
})
### 实现微信小程序中的商品单选列表组件微信小程序实现商品单选列表组件可以通过 `radio` 和 `radio-group` 组件来完成。这些组件允许用户从多个选项中选择一项,并通过绑定事件处理用户的交互。 #### 使用 Radio 和 Radio-Group 组件构建商品单选列表 为了创建一个功能完整的商品单选列表,可以按照如下方式定义页面结构: ```html <!-- 商品单选列表 --> <view class="goods-list"> <label wx:for="{{ goods }}" wx:key="id" class="item"> <!-- 显示商品名称和其他信息 --> <text>{{ item.name }}</text> <!-- 单选框 --> <radio-group bindchange="onRadioChange"> <radio value="{{ item.id }}">{{ item.price }}元</radio> </radio-group> </label> </view> <button type="primary" bindtap="submitSelection">确认选择</button> ``` 上述代码片段展示了如何遍历商品数据并为每件商品显示对应的单选按钮[^2]。这里假设存在名为 `goods` 的数组变量用于存储待展示的商品详情;同时设置了点击提交按钮触发的方法名 `submitSelection` 来获取最终的选择结果。 #### 处理用户选择逻辑 对于每一个被选中的 `radio` ,其所属的 `radio-group` 将会发出带有当前所选值作为参数的 change 事件。因此可以在 JavaScript 文件里监听此事件从而更新状态或执行其他操作: ```javascript Page({ data: { selectedId: '', // 存储已选商品ID goods: [ { id: '001', name: '苹果手机', price: 5999 }, { id: '002', name: '华为手表', price: 899 } // 更多商品... ] }, onRadioChange(e) { const selectedValue = e.detail.value; this.setData({selectedId: selectedValue}); }, submitSelection() { console.log('Selected Item ID:', this.data.selectedId); // 可在此处添加更多业务逻辑,比如跳转到支付页等 } }) ``` 这段脚本初始化了一个包含两个示例产品的商品列表,并实现了当用户改变选择时记录下新的选择项以及提供了一种方法用来处理用户按下“确认选择”后的动作。 #### 样式优化建议 为了让界面更加友好美观,在实际开发过程中还可以适当调整样式表文件 `.wxss` 中的相关属性,使各个元素布局合理、间距适中并且视觉效果良好。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值