vue代办事件案例实战练习,配有答案解析

代办事件案例

  • 该案例,综合了前面所学的知识,列入点击事件绑定,双向绑定,v-for循环语句,v-model双向绑定,以及input标签的不同type形式。

    演示代码如下:

<template >
<div id="kuagjia"><div ><div class="top"><span style="margin-left: -700px;">学习计划表</span></div><div class="hang1"><div>学习科目<input type="text" placeholder="请输入学习科目" v-model="addSj"></div><div>学习内容<textarea placeholder="请输入学习内容" v-model="addContent" ></textarea></div><div>学习地点<select v-model="addPlace"><option>自习室</option><option>教室</option><option>图书馆</option></select></div><div><button @click="addImg">添加</button></div></div></div><div><table id="table" border="1px" cellspacing="0"><thead><tr><th>序号</th><th>学习科目</th><th>学习内容</th><th>学习地点</th><th>完成状态</th><th>操作</th></tr></thead><tbody  ><tr v-for="(i,index) in arrImg"><td>{{ index+1 }}</td><td>{{ i.sj }}</td><td>{{ i.content }}</td><td>{{ i.place }}</td><td ><label class="switch"><input type="checkbox"   v-model="i.status"     ><span class="slider round"></span></label>{{ i.status ? "完成":"未完成" }}</td><td @click="delImg(i.id, i.status)">删除</td></tr></tbody></table></div>
</div></template><script setup>
import {ref}  from  'vue';
const addSj = ref('')
const addContent = ref('')
const addPlace = ref('')
const ids = ref(1)
const arrImg =ref([]) const addImg = () =>{if (addSj.value === '' || addContent.value === ''){alert('学习科目和学习内容都不能为空')}else{var addSjIs = addSj.valuevar addContentIs = addContent.valuevar addPlaceIs = addPlace.valuevar idss = ids.value++var a = {id : idss, sj : addSjIs, content : addContentIs, place : addPlaceIs, status: false}arrImg.value.push(a)}
}
const delImg = (id, status) =>{if (status) {arrImg.value = arrImg.value.filter(x => x.id != id )}else{alert('没有做完是不会被删除的')}}
</script><style>
#kuagjia{width: 800px;height: 400px;border: 1xp solid;background-color: antiquewhite;
}
.top{width: 800px;height: 30px;background-color: gray;padding-left: 0px;}
.hang1{display: flex;}
#table{border: 1px solid;width: 800px;margin-top: 20px;}
/* 开关 */
/* 开关 - 滑块周围的框 */
.switch {--width:22px;position: relative;display: inline-block;width: calc(var(--width) * 2);height: var(--width);
}/* 隐藏默认 HTML 复选框 */
.switch input {opacity: 0;width: 0;height: 0;
}/* 滑块 */
.slider {position: absolute;top: 0;left: 0;right: 0;bottom: 0;cursor: pointer;background-color: #ccc;transition: .4s;
}/* 轨道*/
.slider.round {border-radius: 34px;
}
/* 圆形滑块 */
.slider.round::before {border-radius: 50%;
}.slider::before {position: absolute;content: "OFF"; height: var(--width);width: var(--width);left: 0px;bottom: 0px;background-color: white;-webkit-transition: .4s;transition:all .4s;font-size: 10px;text-align: center;line-height: var(--width);color: #ccc;
}input:checked+.slider {background-color: #2196F3;
}input:checked+.slider:before {transform: translateX(var(--width));content: "ON"; color: #2196F3;
}
button{background-color: #ccc;margin-left: 20px;
}
</style>
  • 效果如下

    在输入框的提示下输入内容,点击添加按钮就会自动添加代办任务,还有完成状态的调整功能,若任务未完成,点击删除是不会有效果的!!!如果第2次添加的内容已经在表中存在,会提示用户,无需重复添加。

在这里插入图片描述

  • 当代办案例邂逅统计完成的个数,则会出现另一个版本的代办案例

    代码如下:

<template><div class="main"><h2>代办事项</h2><input id="task" type="text" placeholder="请填写任务" @keyup.enter.exact="add" v-model="content"><ul><li v-for="item in display" @mouseover="flag = true" @mouseleave="flag = false"><div  id="list"><input type="checkbox" v-model="item.status"><span v-if="!item.status">{{ item.name }}</span><span v-else> <del> {{ item.name }} </del></span><div><i v-show="flag" @click="del(item.id)">X</i></div></div><hr></li></ul><div id="footer"><div id="tips">共有{{ display.length }} {{ which }}条任务 </div><div><button @click="which = '全部'">全部</button><button @click="which = '待办'">待办</button><button @click="which = '已办'">已办</button></div></div></div>
</template>
<script setup>import { ref, computed } from 'vue';const flag = ref(false);
const content = ref("");
const which = ref("全部")const arr = ref([{ name: '晨练', id: 1, status: false },{ name: '练书法', id: 2, status: false }
])const display = computed(() => {if (which.value == "全部") {return arr.value;} else if (which.value == "待办") {return arr.value.filter(x => !x.status);} else {return arr.value.filter(x => x.status);}
})const add = () => {let item = { name: content.value, id: arr.value.length + 1, status: false };arr.value.push(item);content.value = "";
}const del = (id) => {arr.value = arr.value.filter(x => x.id != id)
}</script><style scoped>
.main {display: flex;flex-direction: column;align-items: flex-start;
}h2 {align-self: center
}ul {list-style-type: none;padding: 0px;
}#list {display: flex;justify-content: space-between;min-width: 500px;
}ul li div {min-width: 50px;margin: 0px;
}#task {min-width: 500px;
}#footer {display: flex;min-width: 500px;justify-content: space-between;}#tips {display: flex;align-items: center;
}#footer button {border: 0px;background-color: transparent;
}#footer button:active {background-color: aqua;
}
</style>
  • 案例效果如下

    同理根据提示在输入框内输入想要完成的任务,按下Enter键就会添加到列表队伍当中,当鼠标移动到任务条上时右侧会显示一个×,点击x即可删除此条任务!在列表的最后一栏,点击不同状态,会过滤相应的任务,并做出相应的统计。

在这里插入图片描述

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

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

相关文章

基于LangChain-Chatchat实现的RAG-本地知识库的问答应用[3]-参数配置详细版

基于LangChain-Chatchat实现的RAG-本地知识库的问答应用[3]-参数配置详细版 在开始参数配置之前,先执行以下脚本 python copy_config_example.py该脚本将会将所有config目录下的配置文件样例复制一份到config目录下,方便开发者进行配置。 接着,开发者可以根据自己的需求,对…

盲盒一番赏小程序开发,市场新活力

当下&#xff0c;年轻人的的消费水平在逐渐提升&#xff0c;对娱乐消费的需求也在提升&#xff0c;一番赏的出现&#xff0c;成功吸引了年轻人的关注&#xff0c;成为了年轻人娱乐休闲的主要方式&#xff0c;在商场中的一番赏店铺中&#xff0c;都能看到年轻人的身影。 一番赏…

手机录屏怎么操作?3个小技巧,轻松录屏

在数字化时代&#xff0c;手机录屏功能已逐渐成为我们日常生活和工作中不可或缺的工具。无论是为了记录游戏过程、制作教程&#xff0c;还是为了留存重要的视频通话&#xff0c;手机录屏都能发挥巨大的作用。本文将详细介绍手机录屏的3个功能、录屏小技巧等&#xff0c;帮助您更…

GD32 MCU启动后如何运行到main函数

GD32 MCU启动后如何运行到main函数入口&#xff1f;你是否也有这样的疑虑。在执行到main函数之前MCU干了哪些事情呢&#xff1f;下面为大家解答。 MCMCU上电后&#xff0c;首先会根据BOOT0和BOOT1的状态判断从主Flash/SRAM/ISP中启动&#xff0c;如果BOOT0为低电平&#xff0c…

白蚁监测装置:支持北斗定位

TH-BY2白蚁监测控制管理系统原理 采用白蚁喜欢吃的食物做诱饵&#xff0c;吸引白蚁取食&#xff0c;取食过程中触动报警装置。报警装置发出信号&#xff0c;通过物联网传输到监控系统&#xff0c;经过数据处理&#xff0c;监测结果呈现给用户。用户通知白蚁防治专业人员&#x…

高端品牌网站建设

随着互联网的快速发展&#xff0c;越来越多的企业开始意识到高端品牌网站建设对于企业发展的重要性。高端品牌网站建设不仅是企业形象展示的窗口&#xff0c;更是与消费者进行有效沟通和互动的桥梁。下面从设计、内容和用户体验三个方面&#xff0c;探讨高端品牌网站建设的重要…

美国犹他州立大学《Nature Geoscience》(IF=18)!揭示草本植物对土壤有机碳的重要贡献!

随着全球变暖的影响越来越显著&#xff0c;碳固定成为了一个备受关注的话题。在这个背景下&#xff0c;热带草原被认为是一个潜在的碳固定区域。然而&#xff0c;目前的研究主要关注于在热带草原中种植树木&#xff0c;以期望增加土壤有机碳含量。但是&#xff0c;热带草原中的…

当OpenHarmony遇上OpenEuler

1、 安装openEuler 虚拟机、物理机器当然都可以安装。虚拟机又可以使用WSL、或者VMWare、VirtualBox虚拟机软件&#xff0c;如果需要安装最新版本&#xff0c;建议使用后者。当前WSL只支持OpenEuler 20.03。 1.1 WSL openEuler WSL的安装都是程序员的必备技能了&#xff0c;…

干G货,性能测试基本方法和原则,

一、性能测试关键点 评估性能指标——线程tps&#xff08;可架构给&#xff09; 吞吐量qps&#xff08;可架构给&#xff09; 错误率&#xff08;可架构给&#xff09; 平均响应时间&#xff08;可架构给&#xff09;模拟线上数据量了解接口有没有缓存&#xff0c;有缓存的需要…

springboot连接多个库

一个SpringBoot项目&#xff0c;同时连接两个数据库&#xff1a;比如一个是Mysql数据库&#xff0c;一个是oracle数据库&#xff08;啥数据库都一样&#xff0c;连接两个同为oracle的数据库&#xff0c;或两个不同的数据库&#xff0c;只需要更改对应的driver-class-name和jdbc…

Compose 可组合项 - DatePicker、DatePickerDialog

一、概念 一般是以对话框的形式呼出&#xff0c;DatePickerDialog 就是对 DatePicker 的一个简单对话框封装。 Composable fun DatePicker( state: DatePickerState, modifier: Modifier Modifier, dateFormatter: DatePickerFormatter remember { DatePickerFor…

使用MySQL

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 1 下载安装MySQL MySQL是一款开源的数据库软件&#xff0c;由于其免费特性得到了全世界用户的喜爱&#xff0c;是目前使用人数最多的数据库。下面将…

Swarm 集群管理

Swarm 集群管理 简介 Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API&#xff0c;所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。 支持的工具包括但不限…

使用 Nstbrowser 管理多个帐户 - 2024 年最佳反检测浏览器

每个人一定都看过那些房间里全是窃听器的老间谍电影&#xff0c;对吧&#xff1f;现在这些电影可能看起来有点好笑&#xff0c;但互联网并没有好到哪里去&#xff01; 事实上&#xff0c;每个你打开的页面在你浏览时都在被监控&#xff01;此外&#xff0c;当你管理多个账户时…

Rust 开发搜索引擎 Quickwit 替代ES,成本降低 10 倍,查询亚秒级别!

一、Quickwit 概述 Quickwit 它是云存储上最快的搜索引擎&#xff0c;它非常适合用于可观察性的云原生搜索引擎&#xff0c;如日志、跟踪以及即将推出的指标。同时也是 Datadog、Elasticsearch、Loki 和 Tempo 的开源替代方案。 二、Quickwit 功能 全文搜索和聚合查询&#…

C++语法13 单分支结构的相关问题详解

一、奇偶数问题 要判断一个数是否是偶数&#xff0c;只要判断这个数字能不能被2整除即可。如果一个数字a除以2&#xff0c;没有余数&#xff0c;那么就是偶数&#xff1b;如果除以2有余数&#xff0c;那么就是奇数。 if(a%20) a是偶数 if(a%21) a是奇数 训练&#xff1…

LangChain-ChatGLM本地搭建|报错合集(win10)

安装过程 1. 创建虚拟环境 conda create -n langchain-chatglm python3.10 conda activate langchain-chatglm2. 部署 langchain-ChatGLM git clone https://github.com/imClumsyPanda/langchain-ChatGLMpip3 install -r requirements.txt pip3 install -U gradio pip3 inst…

05-5.4.1 树的存储结构

&#x1f44b; Hi, I’m Beast Cheng &#x1f440; I’m interested in photography, hiking, landscape… &#x1f331; I’m currently learning python, javascript, kotlin… &#x1f4eb; How to reach me --> 458290771qq.com 喜欢《数据结构》部分笔记的小伙伴可以…

springboot宠物领养系统-计算机毕业设计源码07863

摘 要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&#xff0c;科学化的管理&#xff0c;使信息存…

4. Revit API UI 之 Ribbon(界面)

4. Revit API UI 之 Ribbon&#xff08;界面&#xff09; 第二篇中&#xff0c;我们提到了IExternalApplication&#xff0c;该接口需要实现两个方法&#xff1a;Revit启动时调用的OnStartup 方法&#xff0c;和Revit关闭时调研的OnShutdown 方法。文中还给了个例子&#xff0…