Vue指令的综合案例

Vue指令的综合案例

参考文献:
Vue的快速上手
Vue指令上
Vue指令下

文章目录

  • Vue指令的综合案例
    • 记事本
  • 列表渲染
  • 删除功能
  • 添加功能
    • 底部统计和清空
    • 总代码
  • 结语

    博客主页: He guolin-CSDN博客

    关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长!

嗨!收到一张超美的图, 愿你每天都能顺心!

在这里插入图片描述

记事本

功能需求:
1.列表渲染
2.删除功能
3.添加功能
4.底部统计和清空

列表渲染

首先先完成第一步,将列表渲染出来,为了让样式稍微好看一点,我加了部分css代码。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        body{
            margin: 0;
            padding: 0;
            display: flex;
            flex-direction: column;
            align-items: center;
        }
        h1{
            color: red;   
        }
        .text{
            width: 250px;
            padding: 20px;
            border-radius: 5px;
            box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
        }
        ul{
            padding: 0;
        }
        li{
            list-style-type: none;
        }
        .del{
            float: right;
        }
    </style>
</head>
<body>
    <h1>记事本</h1>   
    <div class="text" id="app">
        <input type="text" placeholder="请输入任务">
        <button>添加任务</button>
        <ul>
            <li v-for="(item,index) in list " :key="list">
                <span>{{index+1}}.</span><label for="">{{item.name}}</label>
                <button class="del">X</button>
                <hr>
            </li>
        </ul>
    </div>
    

    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>
    <script>
        const app = new Vue({
            el:"#app",
            data:{
                list:[
                    { id: 1, name: '跑步一公里' },
                    { id: 2, name: '跳绳200次' },
                    { id: 3, name: '游泳100米' },
                ]
            }
        })
    </script>
</body>
</html>

首先设置标题为记事本,其次设置一个输入添加事件的文本框和一个用于添加任务的按钮。接下来我们在data数据里设置一个数组,里面装存的有我们的任务事件,最右边有个删除按钮。再用v-for循环遍历,让我们的列表事件渲染到视图上。接下来来看下我们渲染后的结果。
在这里插入图片描述

删除功能

接下来我们要进行删除功能,当鼠标滑动到当前任务的时候才会显示我们的叉号,其余时间是隐藏的,我们可以css代码来控制这段内容

.del{
    float: right;
    display: none;
}
li:hover .del{
    display: inline-block;
}

这样就能控制删除按钮的显示与不显示了。

我们在button按钮为X的地方设置删除

<button class="del" @click="del(item.id)">X</button>

<script>
    const app = new Vue({
        el: "#app",
        data: {
            list: [
                { id: 1, name: '步一公里' },
                { id: 2, name: '绳200次' },
                { id: 3, name: '泳100米' },
            ]
        },
        methods: {
            del(id){
                this.list = thislist.filter(item=> item.id !== id)
            }
        }
    });
    </script>

这样当我们点击按钮时,事件删除,我们来看下效果
在这里插入图片描述

添加功能

添加功能一共分两步,第一步实时获取我们的输入框里的内容,第二步点击我们的按钮的时,进行新增,往我们数组的最前面加。这里可以使用我们的v-model组件。

我们对输入文本框设置一个v-model属性,在对添加任务按钮加一个增加的方法的点击事件。

<input type="text" placeholder="请输入任务" v-model="todoName">
<button @click="add">添加任务</button>
<script>
    const app = new Vue({
        el: "#app",
        data: {
            todoName:"",
            list: [
                { id: 1, name: 跑步一公里' },
                { id: 2, name: 跳绳200次' },
                { id: 3, name: 游泳100米' },
            ]
        },
        methods: {
            del(id){
                this.list =this.list.filte(item => itemid !== id)
            },
            add(){
                //注意:我们增加了一个判断,如果添加的事件为空,会发出提示。
                if(this.todoName.trim === ""){
                        alert("请输入任务")
                        return
                    }
                //在列表的头部添加数据,id为时间戳。
                this.list.unshift({
                    id:+newDate,
                    name:thistodoName
                })
                this.todoName=""
            }
        }
    });
</script>

我们来看下效果:
在这里插入图片描述

底部统计和清空

我们在底部添加一个合计,来展示有多少个任务要做,和一个清空按钮。在按钮内写一个方法点击就将列表赋值为空列表

<span>合计:{{list.length}}</span>
<button class="clear" @click="clear">清空</button>
<script>
    const app = new Vue({
        el: "#app",
        data: {
            todoName:"",
            list: [
                { id: 1, name: 跑步一公里' },
                { id: 2, name: 跳绳200次' },
                { id: 3, name: 游泳100米' },
            ]
        },
        methods: {
            del(id){
                this.list =this.list.filte(item => itemid !== id)
            },
            add(){
                if(thistodoName.trim=== ""){
                    alert("请入任务")
                    return
                }
                this.listunshift({
                    id:+newDate,
                    name:thistodoName
                })
                this.todoName=""
            },
            clear(){
                this.list = []
            }
        }
    });
</script>

这样就可以看到我们的统计和清空拉
在这里插入图片描述

总代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        body{
            margin: 0;
            padding: 0;
            display: flex;
            flex-direction: column;
            align-items: center;
        }
        h1{
            color: red;   
        }
        .text{
            width: 250px;
            padding: 20px;
            border-radius: 5px;
            box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
        }
        ul{
            padding: 0;
        }
        li{
            list-style-type: none;
        }
        .del{
            float: right;
            display: none;
        }
        li:hover .del{
            display: inline-block;
        }
        .clear{
            float: right;
        }
    </style>
</head>
<body>
    <h1>记事本</h1>
    <div class="text" id="app">
        <input type="text" placeholder="请输入任务" v-model="todoName">
        <button @click="add">添加任务</button>
        <ul>
            <li v-for="(item, index) in list" :key="item.id">
                <span>{{ index + 1 }}.</span>
                <label for="">{{ item.name }}</label>
                <button class="del" @click="del(item.id)">X</button>
                <hr>
            </li>
        </ul>
        <span>合计:{{list.length}}</span>
        <button class="clear" @click="clear">清空</button>
    </div>
    
    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>
    <script>
        const app = new Vue({
            el: "#app",
            data: {
                todoName:"",
                list: [
                    { id: 1, name: '跑步一公里' },
                    { id: 2, name: '跳绳200次' },
                    { id: 3, name: '游泳100米' },
                ]
            },
            methods: {
                del(id){
                    this.list = this.list.filter(item => item.id !== id)
                },
                add(){
                    if(this.todoName.trim === ""){
                        alert("请输入任务")
                        return
                    }
                    this.list.unshift({
                        id:+new Date,
                        name:this.todoName
                    })
                    this.todoName=""
                },
                clear(){
                    this.list = []
                }
            }
        });
    </script>
</body>
</html>

结语

本次分享就到这里了,感谢小伙伴的浏览,如果有什么建议,欢迎在评论区留言,如果给小伙伴们带来了一些收获,请留下你的小赞,你的点赞和关注将会成为博主分享每日学习的动力。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2025新春烟花代码(二)HTML5实现孔明灯和烟花效果

效果展示 源代码 <!DOCTYPE html> <html lang"en"> <script>var _hmt _hmt || [];(function () {var hm document.createElement("script");hm.src "https://hm.baidu.com/hm.js?45f95f1bfde85c7777c3d1157e8c2d34";var …

# 网络编程 - 轻松入门不含糊

网络编程 - 轻松入门 介绍 网络编程指的是&#xff0c;在网络通信协议下。实现 不同计算机之间 的数据传输&#xff0c;例如 通信、聊天、视频通话 等。 1. 网络编程概述 学习网络编程过程 中我们可以将网络编程理解为 计算机之间的数据交互 但 前提是通…

SAP BC 同服务器不同client之间的传输SCC1

源配置client不需要释放 登录目标client SCC1

【大数据基础】大数据概述

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈大数据技术原理与应用 ⌋ ⌋ ⌋专栏系统介绍大数据的相关知识&#xff0c;分为大数据基础篇、大数据存储与管理篇、大数据处理与分析篇、大数据应用篇。内容包含大数据概述、大数据处理架构Hadoop、分布式文件系统HDFS、分布式数…

【ROS2】☆ launch之Python

☆重点 ROS1和ROS2其中一个很大区别之一就是launch的编写方式。在ROS1中采用xml格式编写launch&#xff0c;而ROS2保留了XML 格式launch&#xff0c;还另外引入了Python和YAML 编写方式。选择哪种编写取决于每位开发人员的爱好&#xff0c;但是ROS2官方推荐使用Python方式编写…

Shell编程详解

文章目录 一、Linux系统结构二、Shell介绍1、Shell简介2、Shell种类3、Shell查询和切换 三、Shell基础语法1、注释2、本地变量3、环境变量3.1、查看环境变量3.2、临时设置环境变量3.3、永久设置环境变量 4、特殊变量5、控制语句5.1、shell中的中括号5.2、if语句5.3、for循环5.4…

Zemax 序列模式下的扩束器

扩束器结构原理 扩束器用于增加准直光束&#xff08;例如激光束&#xff09;的直径&#xff0c;同时保持其准直。它通常用于激光光学和其他需要修改光束大小或发散度的应用。 在典型的扩束器中&#xff0c;输入光束是准直激光器&#xff0c;或光束进入第一个光学元件。当光束开…

react-quill 富文本组件编写和应用

index.tsx文件 import React, { useRef, useState } from react; import { Modal, Button } from antd; import RichEditor from ./RichEditor;const AnchorTouchHistory: React.FC () > {const editorRef useRef<any>(null);const [isModalVisible, setIsModalVis…

【深度学习】多目标融合算法(二):底部共享多任务模型(Shared-Bottom Multi-task Model)

目录 一、引言 1.1 往期回顾 1.2 本期概要 二、Shared-Bottom Multi-task Model&#xff08;SBMM&#xff09; 2.1 技术原理 2.2 技术优缺点 2.3 业务代码实践 三、总结 一、引言 在朴素的深度学习ctr预估模型中&#xff08;如DNN&#xff09;&#xff0c;通常以一个行…

探秘MetaGPT:革新软件开发的多智能体框架(22/30)

一、MetaGPT 引发的 AI 变革浪潮 近年来&#xff0c;人工智能大模型领域取得了令人瞩目的进展&#xff0c;GPT-3、GPT-4、PaLM 等模型展现出了惊人的自然语言处理能力&#xff0c;仿佛为 AI 世界打开了一扇通往无限可能的大门。它们能够生成流畅的文本、回答复杂的问题、进行创…

LabVIEW软件Bug的定义与修改

在LabVIEW软件开发过程中&#xff0c;bug&#xff08;程序错误或缺陷&#xff09;指的是程序中导致不符合预期行为的任何问题。Bug可能是由于编码错误、逻辑漏洞、硬件兼容性问题、系统资源限制等因素引起的。它可能会导致程序崩溃、功能无法正常执行或输出结果不符合预期。理解…

高性能网络模式:Reactor 和 Proactor

Reactor Reactor 采用I/O多路复用监听事件&#xff0c;收到事件后&#xff0c;根据事件类型分配给某个进程/线程。 实际应用中用到的模型&#xff1a; 单 Reactor 单进程 单 Reactor 多线程 优点&#xff1a;能充分利用多核CPU性能。 缺点&#xff1a;存在多线程竞争共享资源…

扩散模型论文概述(三):Stability AI系列工作【学习笔记】

视频链接&#xff1a;扩散模型论文概述&#xff08;三&#xff09;&#xff1a;Stability AI系列工作_哔哩哔哩_bilibili 本期视频讲的是Stability AI在图像生成的工作。 同样&#xff0c;第一张图片是神作&#xff0c;总结的太好了&#xff01; 介绍Stable Diffusion之前&…

大数据技术-Hadoop(四)Yarn的介绍与使用

目录 一、Yarn 基本结构 1、Yarn基本结构 2、Yarn的工作机制 二、Yarn常用的命令 三、调度器 1、Capacity Scheduler&#xff08;容量调度器&#xff09; 1.1、特点 1.2、配置 1.2.1、yarn-site.xml 1.2.2、capacity-scheduler.xml 1.3、重启yarn、刷新队列 测试 向hi…

玩转大语言模型——ollama导入huggingface下载的模型

ollama导入huggingface模型 前言gguf模型查找相关模型下载模型 导入Ollama配置参数文件导入模型查看导入情况 safetensfors模型下载模型下载llama.cpp配置环境并转换 前言 ollama在大语言模型的应用中十分的方便&#xff0c;但是也存在一定的问题&#xff0c;比如不能使用自己…

apollo内置eureka dashboard授权登录

要确保访问Eureka Server时要求输入账户和密码&#xff0c;需要确保以下几点&#xff1a; 确保 eurekaSecurityEnabled 配置为 true&#xff1a;这个配置项控制是否启用Eureka的安全认证。如果它被设置为 false&#xff0c;即使配置了用户名和密码&#xff0c;也不会启用安全认…

【Dify】Dify自定义模型设置 | 对接DMXAPI使用打折 Openai GPT 或 Claude3.5系列模型方法详解

一、Dify & DMXAPI 1、Dify DIFY&#xff08;Do It For You&#xff09;是一种自动化工具或服务&#xff0c;旨在帮助用户简化操作&#xff0c;减少繁琐的手动操作&#xff0c;提升工作效率。通过DIFY&#xff0c;用户能够快速完成任务、获取所需数据&#xff0c;并且可以…

【深度学习】布匹寻边:抓边误差小于3px【附完整链接】

布匹寻边 项目简介 布匹寻边是指布料裁剪过程中&#xff0c;通过AI寻边技术自动识别布匹的边缘&#xff0c;将检测到的边缘信息输出&#xff0c;确保裁剪的准确性&#xff0c;减少浪费&#xff0c;并提高生产效率。 项目需求 将打满针眼的布匹边缘裁剪掉&#xff0c;且误差小…

http range 下载大文件分片

摘自&#xff1a;https://www.jianshu.com/p/32c16103715a 上传分片下载也能分 HTTP 协议范围请求允许服务器只发送 HTTP 消息的一部分到客户端。范围请求在传送大的媒体文件&#xff0c;或者与文件下载的断点续传功能搭配使用时非常有用。 检测服务器端是否支持范围请求 假…

解决WordPress出现Fatal error: Uncaught TypeError: ftp_nlist()致命问题

错误背景 WordPress版本&#xff1a;wordpress-6.6.2-zh_CN WooCommerce版本&#xff1a;woocommerce.9.5.1 WordPress在安装了WooCommerce插件后&#xff0c;安装的过程中没有问题&#xff0c;在安装完成后提示&#xff1a; 此站点遇到了致命错误&#xff0c;请查看您站点管理…