使用UniApp实现下拉框和表格组件页面

使用UniApp实现下拉框和表格组件页面

UniApp提供了一套完整的跨平台开发框架,支持在多个平台上运行。下拉框和表格是常见的UI组件,可以通过UniApp内置组件或第三方插件实现。

下拉框组件的实现

UniApp内置的<picker>组件可以实现下拉选择功能。以下是一个基础的下拉框实现示例:

html 复制代码
<template>
  <view>
    <picker mode="selector" :range="options" @change="handlePickerChange">
      <view>当前选择:{{selectedOption}}</view>
    </picker>
  </view>
</template>

<script>
export default {
  data() {
    return {
      options: ['选项1', '选项2', '选项3'],
      selectedOption: '请选择'
    }
  },
  methods: {
    handlePickerChange(e) {
      this.selectedOption = this.options[e.detail.value]
    }
  }
}
</script>
表格组件的实现

UniApp没有内置表格组件,但可以通过<view><text>组合实现表格效果,或使用第三方组件如uni-table

html 复制代码
<template>
  <view>
    <uni-table border>
      <uni-tr>
        <uni-th>姓名</uni-th>
        <uni-th>年龄</uni-th>
        <uni-th>职业</uni-th>
      </uni-tr>
      <uni-tr v-for="(item, index) in tableData" :key="index">
        <uni-td>{{item.name}}</uni-td>
        <uni-td>{{item.age}}</uni-td>
        <uni-td>{{item.job}}</uni-td>
      </uni-tr>
    </uni-table>
  </view>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        {name: '张三', age: 25, job: '工程师'},
        {name: '李四', age: 30, job: '设计师'}
      ]
    }
  }
}
</script>
下拉框与表格联动

实现下拉框选择后更新表格内容的联动效果:

html 复制代码
<template>
  <view>
    <picker mode="selector" :range="filterOptions" @change="filterTable">
      <view>筛选条件:{{currentFilter}}</view>
    </picker>
    
    <uni-table border>
      <uni-tr>
        <uni-th>姓名</uni-th>
        <uni-th>部门</uni-th>
      </uni-tr>
      <uni-tr v-for="(item, index) in filteredData" :key="index">
        <uni-td>{{item.name}}</uni-td>
        <uni-td>{{item.department}}</uni-td>
      </uni-tr>
    </uni-table>
  </view>
</template>

<script>
export default {
  data() {
    return {
      filterOptions: ['全部', '技术部', '市场部', '人事部'],
      currentFilter: '全部',
      allData: [
        {name: '张三', department: '技术部'},
        {name: '李四', department: '市场部'},
        {name: '王五', department: '人事部'}
      ],
      filteredData: []
    }
  },
  created() {
    this.filteredData = this.allData
  },
  methods: {
    filterTable(e) {
      this.currentFilter = this.filterOptions[e.detail.value]
      if(this.currentFilter === '全部') {
        this.filteredData = this.allData
      } else {
        this.filteredData = this.allData.filter(item => 
          item.department === this.currentFilter
        )
      }
    }
  }
}
</script>
样式优化

通过CSS可以进一步美化下拉框和表格:

css 复制代码
/* 下拉框样式 */
picker {
  padding: 15px;
  background-color: #f8f8f8;
  border-radius: 5px;
  margin: 10px;
}

/* 表格样式 */
uni-table {
  width: 100%;
  margin-top: 20px;
}

uni-th {
  background-color: #f0f0f0;
  padding: 10px;
}

uni-td {
  padding: 8px;
  text-align: center;
}
注意事项
  1. 使用uni-table需要先安装对应的uni-ui组件
  2. 数据量较大时考虑分页处理
  3. 移动端适配需要注意表格的横向滚动问题
  4. 下拉框在H5和微信小程序中的表现略有不同

通过以上方法可以快速在UniApp中实现包含下拉框和表格的页面,并能实现两者间的数据联动。

相关推荐
c2385640 分钟前
把 C++ 内存分配拆透:new 与 malloc 的三层血缘
开发语言·c++·算法
Ashley的成长之路1 小时前
前端性能优化实战手册·第2篇:资源加载策略全解
前端·性能优化·资源加载·http/3·性能优化实战·资源加载优化
浅水壁虎1 小时前
vue基础(第二章 )
前端·javascript·vue.js
界面开发小八哥1 小时前
界面控件DevExtreme v26.1新版亮点——支持Angular 22
前端·javascript·angular.js·devexpress·ui开发·devextreme
Getflare1 小时前
前端 + UI 设计 + AI:这不是三个工种,是一个新三角能力模型(附自检清单)
前端·人工智能·ui
moonsims1 小时前
星闪在跨域无人化系统作用
开发语言·php
oil欧哟2 小时前
我做了一个 Vibe Coding 术语学习站:VibeHub
前端·ai·agent·独立开发·vibe coding
Iruoyaoxh2 小时前
栈和队列~
java·开发语言
审小匠OpenCPAi2 小时前
银行流水核查怎么自动化?单边匹配、双向勾稽与图聚类异常检测的工程对比
java·前端·人工智能·python·审计