uniapp [全端兼容] - 详细实现下拉筛选菜单功能组件,下拉式筛选菜单效果,类似电商美团点击筛选项底部弹出列表点击选择后自动收起(详细示例代码,全端兼容小程序、安卓苹果app、h5网页、nvue

warning: 这篇文章距离上次修改已过202天,其中的内容可能已经有所变动。

在uniapp中实现下拉筛选菜单功能组件,可以使用picker组件配合多个radio-groupcheckbox-group来实现。以下是一个简单的示例:




<template>
  <view class="container">
    <view class="picker-view">
      <picker mode="selector" :range="pickerRange" @change="onPickerChange">
        {{pickerValue}}
      </picker>
    </view>
    <view class="radio-group-view">
      <radio-group v-for="(item, index) in radioGroups" :key="index" @change="onRadioChange(index, ...arguments)">
        <label v-for="(radio, radioIndex) in item" :key="radioIndex">
          <radio :value="radioIndex" :checked="radio.checked">{{radio.name}}</radio>
        </label>
      </radio-group>
    </view>
    <view class="checkbox-group-view">
      <checkbox-group v-for="(item, index) in checkboxGroups" :key="index" @change="onCheckboxChange(index, ...arguments)">
        <label v-for="(checkbox, checkboxIndex) in item" :key="checkboxIndex">
          <checkbox :value="checkboxIndex" :checked="checkbox.checked">{{checkbox.name}}</checkbox>
        </label>
      </checkbox-group>
    </view>
  </view>
</template>
 
<script>
export default {
  data() {
    return {
      pickerRange: ['筛选1', '筛选2', '筛选3'],
      pickerValue: '请选择',
      radioGroups: [
        [
          { name: '选项1', checked: false },
          { name: '选项2', checked: false }
        ],
        // ... 可以添加更多的radio组
      ],
      checkboxGroups: [
        [
          { name: '选项A', checked: false },
          { name: '选项B', checked: false }
        ],
        // ... 可以添加更多的checkbox组
      ]
    };
  },
  methods: {
    onPickerChange(e) {
      this.pickerValue = this.pickerRange[e.detail.value];
    },
    onRadioChange(groupIndex, e) {
      this.radioGroups[groupIndex].forEach((radio, index) => {
        radio.checked = index === e.detail.value;
      });
    },
    onCheckboxChange(groupIndex, e) {
      this.checkboxGroups[groupIndex].forEach((checkbox, index) => {
        checkbox.checked = e.detail.value.includes(index);
      });
    }
  }
};
</script>
 
<style>
.container {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}
.picker-view, .radio-group-view, .checkbox-group-view {
  margin-bottom: 10px;
}
</style>

这个组件包含一个picker组件用于展示顶部的下拉菜单,下面是多个radio-groupcheckbox-group用于展示筛选条件。每当用户更改选择,对应的数据将会更新,以反映用户的选择。这个简单的例子可以扩展为包括更复杂的

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日