Vant2组件库的基础应用

目录

一、Picker 选择器

1.1、数组对象处理

1.2、每个选项颜色设置

二、滚动分页加载列表

三、Calendar 日历(可选范围限制)

四、input值过滤

官网:Vant 2 - Mobile UI Components built on Vue

一、Picker 选择器

官网示例数据:

columns: ['杭州', '宁波', '温州', '绍兴', '湖州', '嘉兴', '金华', '衢州'],

1.1、数组对象处理

  一般接口返回格式是数组对象,在项目中van-picker的数组如果含有对象,则需要包含 text 属性用于显示的文本、value 属性作为选择器的值,如果接口返回的结果中属性名和我们期望的不一样,就自己map设置一下。

<template><van-fieldv-model="segmentSign.text"clearablelabel="所属列表"placeholder="点击选择所属列表"><template #right-icon><van-icon name="arrow" @click="showPicker = true" /></template></van-field><!-- 复杂数组的选择器 --><van-popup v-model="showPicker" position="bottom" :lazy-render="false"><van-pickershow-toolbar:columns="segmentList"@confirm="onConfirm"@cancel="showPicker = false"></van-picker></van-popup>
</template>
<script>data() {showPicker: false,segmentList: [],segmentSign: {},};},methods: {onConfirm(val) {this.segmentSign = val;this.showPicker = false;},async getDepartList() {let res = await findDepartList();if (res.data.code == 200) {let data = res.data.result || [];if (data.length > 0) {let result = data.map((item) => {let res = {};res.text = item.deptName;res.value = item.deptId;res.teacherId = item.teacherId;return res;});this.segmentList = result;if (this.segmentList && this.segmentList.length > 0) {this.segmentSign = this.segmentList[0];}}} else {Toast(res.data.message);}},
}
</script>

1.2、每个选项颜色设置

#option="option"里面放个div,是为了让每一行的样式可以自己设置,也可以加更多内容!

<template><van-picker:columns="columns"ref="van_picker":default-index="StatusVal.status"@change="PickerChange"><template #option="option"><divstyle="display: flex; flex-direction: column; align-items: center"><div :style="'color:' + colorType(option.id)">{{ option.value }}</div></div></template></van-picker>
</template>
<script>data() {columns: [{ id: 0, value: "出勤" },{ id: 1, value: "迟到" },{ id: 2, value: "旷课" },{ id: 3, value: "早退" },{ id: 4, value: "请假" },],StatusVal: {},selectId: "",};},methods: {// picker选项改变PickerChange(val, index) {this.selectId = index.id;},colorType(index) {const colors = ["#6BC25E", "#F0A55C", "#E77575", "#F0A55C", "#6FBFF1"];return colors[index] || "";},
}
</script>

列表默认值属性 :default-index结合setIndexes才能将默认值修改自己想要的结果

      this.$nextTick(() => {this.$refs.van_picker.setIndexes([this.StatusVal.status]); // 注意这里是数组[索引值]});

二、滚动分页加载列表

  页面初始化时加载初始列表方法,随着页面向下滚动和刷新,页面递增,此时发送请求,获取下一页数据,这个适用于vue2,只需要换成自己的接口和循环组件即可!

<template><!-- 下拉刷新 --><van-pull-refresh v-model="isLoading" @refresh="onRefresh"><!-- 列表 --><van-listv-if="valueLists.length > 0"v-model="loading":finished="finished"finished-text="没有更多了":immediate-check="false"offset="50"@load="onLoad"><group-itemsv-for="(item, index) in valueLists":key="index":infoItems="item"></group-items></van-list><van-emptyimage-size="150"v-else:image="require('../../../../static/images/courseSelection/wu.png')"description="暂无数据"class="empty"/><!-- end --></van-pull-refresh>
</template>
<script>data() {return {finished: false,loading: false,isLoading: false,valueLists: [],pageNum: 1,pageSize: 10,pages: 0,};},created() {this.findRecordPageFun();},methods: {// 下拉刷新onRefresh() {// 重置页码this.pageNum = 1;// 重置刷新状态this.finished = false;this.loading = false;// 请求列表this.findRecordPageFun();},// 加载更多onLoad() {this.findRecordPageMore();},// 获取初始列表findRecordPageFun() {let params = {pageNo: this.pageNum,pageSize: this.pageSize,};this.invokeApi(findRecordPage, params).then((res) => {if (res.data.code == 200) {this.valueLists = res && res.data.result.records;this.pages = res && res.data.result.pages;if (this.isLoading) return (this.isLoading = false);} else {Toast(res.data.message);this.valueLists = [];this.pages = 0;this.pageNum = 1;this.finished = false;this.loading = false;}});},async findRecordPageMore() {// 请求页码+1let finePage = this.pageNum + 1;// 判断页码极限if (finePage > this.pages) return (this.finished = true);let params = {pageNo: this.pageNum,pageSize: this.pageSize,};this.invokeApi(findRecordPage, params).then((res) => {if (res.data.code == 200) {this.pages = res.data.result.pages;this.valueLists.push(...res.data.result.records);this.pageNum = finePage;this.loading = false;} else {Toast(res.data.message);this.valueLists = [];this.pages = 0;this.pageNum = 1;this.finished = false;this.loading = false;}});},
}
</script>

三、Calendar 日历(可选范围限制)

<template><van-fieldv-model="times"readonlyclearableplaceholder="点击选择日期"class="custom-field"><template #right-icon><van-icon name="arrow" @click="showDate = true" /></template></van-field><!-- 日历 --><van-calendarv-model="showDate"@confirm="dateConfirm"color="#1989fa":min-date="minDate":max-date="maxDate"/>
</template>
<script>data() {return {times:'',showDate: false,minDate: this.getStartOfWeek(new Date()),maxDate: this.getEndOfWeek(new Date()),};},methods: {getStartOfWeek(date) {const day = date.getDay();const diff = date.getDate() - day + (day === 0 ? -6 : 1);return new Date(date.setDate(diff));},getEndOfWeek(date) {const startOfWeek = this.getStartOfWeek(date);const endOfWeek = new Date(startOfWeek);endOfWeek.setDate(endOfWeek.getDate() + 6);return endOfWeek;},dateConfirm(time) {const date = new Date(time);const year = date.getFullYear();const month = (date.getMonth() + 1).toString().padStart(2, "0");const day = date.getDate().toString().padStart(2, "0");this.times = `${year}-${month}-${day}`;this.showDate = false;},
}
</script>

场景介绍:

点击field栏,选择本周时间,选中后将值回显(minDate和maxDate在方法里限制了范围,在确定事件里整理格式,然后赋值给field栏绑定的值)

四、input值过滤

为啥不用  v-model.trim="xx",因为它只能过滤头部和尾部的空格,而不能过滤中间的,所以自己再写了个方法。

          <van-searchv-model="searchValue"placeholder="请输入姓名"show-action@input="trimLR"><template #action><div @click="getCheckList">搜索</div></template></van-search>// 过滤空格trimLR() {this.searchValue = this.searchValue.replace(/\s+/g, "");},

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/30773.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络实验之单交换机互联终端实验

1.网线 4对&#xff0c;8根&#xff0c;RJ-45连接器&#xff08;水晶头&#xff09;&#xff1b; &#xff08;1&#xff09;直通线 双绞线缆两端按照EIA/TIA568B规格连接水晶头&#xff0c;该双绞线为直通线。 橘白1&#xff0c;橘2&#xff0c;绿白3&#xff0c;蓝4&#…

WPF学习(2)--类与类的继承2-在窗口的实现

一、代码分析 1.Animal.cs 1.1 代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace AnimalNamespace {public class Animal{public string Name { get; set; }public int Age { get; set…

RabbitMQ的简单使用 —— Python篇

&#xff08;一&#xff09;RabbitMQ的简介 RabbitMq 是实现了高级消息队列协议&#xff08;AMQP&#xff09;的开源消息代理中间件。消息队列是一种应用程序对应用程序的通行方式&#xff0c;应用程序通过写消息&#xff0c;将消息传递于队列&#xff0c;由另一应用程序读取 完…

JavaWeb项目配置教程

将你的项目&#xff08;只有代码的文件&#xff0c;不是整个文件&#xff09;拖入idea 找到数据库配置代码&#xff08;一般在Util包里面&#xff0c;或者是properties配置文件&#xff09;并将密码修改为你的数据库密码。 点击Edit Configurations 点击Configure&#xff0…

SOLIDWORKS安装运行环境建议 慧德敏学

SOLIDWORKS是一款要求很高的软件。无可否认。您的电脑功能越强大&#xff0c;运行得越好&#xff0c;但是我们也要考虑购买成本&#xff0c;因此&#xff0c;选择正确的配置很重要。在选择用于SOLIDWORKS的电脑配置时&#xff0c;需要综合考虑多个方面以确保软件能够流畅、以更…

Hi3861 OpenHarmony嵌入式应用入门--PWM 三色灯

这篇文章是讲解的pwm控制三色灯的部分&#xff0c;这部分也是后续全彩智能灯的基础。 硬件原理如下 IO管脚定义在hi-12f_v1.1.2-规格书-20211202.pdf文档中 GPIO API API名称 说明 unsigned int IoTGpioInit(unsigned int id); GPIO模块初始化 hi_u32 hi_io_set_func(hi_i…

无引擎游戏开发(2):最简游戏框架 | EasyX制作井字棋小游戏I

一、EasyX中的坐标系 不同于数理中的坐标系&#xff0c;EasyX中的y轴是竖直向下的 二、渲染缓冲区 之前的程序添加了这三个函数改善了绘图时闪烁的情况: 小球在"画布“上移动的过程就是我们在调用绘图函数&#xff0c;这个”画布“就是渲染缓冲区&#xff0c;先绘制的内…

【配置】Notion自动化备份到github方案

步骤 打开notion网页&#xff0c;获取到需要的值 token_v2 找到请求getSpaces的 Cookie 值 token_v2 space_id 找到请求getSpaces的响应结果space,如下图&#xff1a; file_token 找个页面点击导出&#xff0c;之后拿到这个配置项 注意&#xff1a;配置项会过期&#xff0c…

基于一种改进熵方法的旋转机械故障诊断模型(MATLAB)

熵的概念起源于热力学&#xff0c;1884年&#xff0c;玻尔兹曼定义熵&#xff0c;用以描述分子热运动的无序性和混乱度。1948年&#xff0c;Shannon在其发表的《AMathematicalTheoryofCommunication》中提出香农熵&#xff0c;首次将“熵”引入信息度量范畴&#xff0c;为信息论…

RK3568技术笔记十三 Ubuntu的编译

Ubuntu文件系统编译 在编译前需要按照前面的方法初始化编译环境&#xff0c;否则会导致编译失败&#xff08;若配置过则无需重复配置&#xff09;。 按下述方法编译的Ubuntu系统&#xff0c;用户名是&#xff1a;dianyu 密码&#xff1a;1 编译Ubuntu&#xff0c;执…

机械臂 CoppeliaSim Simulink联合仿真

实现机械臂在CoppeliaSim&#xff08;以前称为V-REP&#xff09;和Simulink上的联合仿真涉及多个步骤&#xff0c;包括环境设置、模型导入、通信配置、控制算法设计和测试调试。 前期准备 安装软件配置工作环境创建和配置CoppeliaSim场景 导入机械臂模型配置机械臂参数在Simuli…

webp图片格式怎么转换成jpg?值得收藏的四种转换方法介绍!

webp图片格式怎么转换成jpg&#xff1f;在当今数字图像处理领域&#xff0c;新兴的WebP格式以其独特的特性和兼容性&#xff0c;迅速成为备受追捧的图像格式之一&#xff0c;这一格式以其高效的压缩能力和优秀的网络传输速度著称&#xff0c;为网络图像的传输和存储提供了全新的…

一种稀疏贝叶斯学习的旋转机械故障诊断方法(MATLAB)

轴承的故障诊断技术是通过检测轴承故障特征信息来判断轴承的具体故障为位置或损伤程度。在轴承发生损坏时&#xff0c;故障特征信息会随着工作时间的增长变得明显。轴承的损坏过程可以分为四个阶段。第一个阶段为损伤初始阶段&#xff0c;轴承故障特征信号一般无法测量。第二个…

基于SSM+Jsp的书店仓库管理系统

摘要&#xff1a;仓库作为储存货物的核心功能之一&#xff0c;在整个仓储中具有非常重要的作用&#xff0c;是社会物质生产的必要条件。良好的仓库布局环境能够对货物进入下一个环节前的质量起保证作用&#xff0c;能够为货物进入市场作好准备&#xff0c;在设计中我们根据书店…

【人工智能】音乐大模型的深入探讨——当机器有了创意,是机遇还是灾难?

&#x1f440;国内外音乐大模型基本情况&#x1f440; ♥概述♥ ✈✈✈如FreeCompose、一术科技等&#xff0c;这些企业专注于开发人工智能驱动的语音、音效和音乐生成工具&#xff0c;致力于利用核心技术驱动文化产业升级。虽然具体公司未明确提及&#xff0c;但可以预见的是…

产业园区空间优化设计的创新实践者

树莓集团在产业园区运营中的空间优化设计方面&#xff0c;通过全面规划与科学布局、绿色智能与可持续发展、个性化定制与灵活多变、创新实践与数字化升级等措施&#xff0c;为企业提供了高品质、高效率的空间环境和服务支持。 一、全面规划与科学布局 明确产业定位&#xff1a…

Nuxt3 实战 (十一):添加路由 Transition 过渡效果和 Loading 动画

页面过渡效果 Nuxt3 利用 Vue 的 组件 在页面和布局之间应用过渡效果。 nuxt.config.ts 文件配置&#xff1a; export default defineNuxtConfig({app: {pageTransition: { name: page, mode: out-in }}, })在页面之间添加过渡效果&#xff0c;在 app.vue 文件中添加以下 CS…

USAD: 多元时间序列的无监督异常检测

USAD: 多元时间序列的无监督异常检测 原创 小王搬运工 时序课堂 2024-06-20 10:43 四川 论文地址&#xff1a;https://dl.acm.org/doi/abs/10.1145/3394486.3403392 论文源码&#xff1a;https://github.com/manigalati/usad 期刊&#xff1a;KDD 20: Proceedings of the 26…

嵌入式开发二十:定时器之基本定时器

定时器是微控制器中的关键外设&#xff0c;用于精确控制时间和事件。通过配置时钟源、预分频器、计数周期和比较值&#xff0c;可以实现各种时间控制任务&#xff0c;如定时中断、PWM生成和时间测量。理解定时器的工作原理和配置方法是嵌入式系统开发中的基本技能。 STM32F407 …

人工智能的头号威胁:投毒攻击

随着掌管数字生活入口的万亿美元俱乐部企业——苹果公司跳入人工智能&#xff08;AI&#xff09;赛道&#xff0c;AI技术民主化的大幕正式拉开&#xff0c;同时也将AI安全问题推向舆论的风口浪尖。 根据瑞银本周一的智能手机调查报告&#xff0c;在中国以外的智能手机用户中&am…