【Vue】案例——To do list:

【Vue】案例------To do list:

一、案例介绍:

这个案例是一个简单的待办事项列表(To Do List)应用,使用了 Vue.js 框架来实现动态数据绑定和交互功能。用户可以在输入框中输入待办事项,并通过点击"增加"按钮将其添加到列表中。待办事项会以列表的形式展示在页面上,用户还可以通过点击"删除"链接来移除特定的事项。

二、效果展示(如图)

三、主要功能:

1.添加待办事项:用户输入内容并点击"增加"按钮,内容会被添加到待办事项数组中;

2.删除待办事项:用户可以点击每个事项旁边的"删除"链接来移除该事项;

3.输入验证:在添加事项时,应用会检查输入是否为空或是否已存在于列表中,并给出相应的提示;

四、技术要点:

1.使用 Vue.js 进行数据绑定和事件处理;

2.利用 v-model 指令实现输入框与数据的双向绑定;

3.使用 v-for 指令动态渲染待办事项列表;

补充:【Vue】Vue模板语法(点击可跳转)

补充:【Vue】数据绑定(单双向)(点击可跳转)

五、代码解析:

1.body部分

html 复制代码
<body>
    <div id='app'>
        <div class="box">
            <!-- 
                如何获取输入框内容,如何将获取到的内容展示到页面上 
                【将内容保存到数组中去】
            -->
            <h3>To do list</h3>
            <div class="list_con">
                <input type="text" v-model="txt">
                <button @click="add()">增加</button>
            </div>

            <div class="list">
                <!-- 
        连续出现的标签、标签块
        1.将标签、标签块重写一遍
        2.将重复出现的标签、标签块里面的"内容"保存到数组中去
        3.将v-for写在重复出现标签、标签块身上
     -->
                <ul>
                    <li v-for="item in arr">
                        <span>{{item}}</span>
                        <!-- 点击删除时候如何指定元素 -->
                        <a href="javascript:;" @click="del(index)">删除</a>
                    </li>
                </ul>
            </div>
        </div>
    </div>

</body>

2.script部分

html 复制代码
<script>
    new Vue({
        el: '#app',
        data: {
            txt: "",    // 保存input框的内容
            arr: ["学习html", "学习css", "学习javascript"]
        },
        methods: {
            // 增加功能
            add() {
                // this.txt    // 输入框输入的内容
                // push:将内容添加到数组最后一项   pop:删除数组最后一项
                // unshift:将内容添加到数组最前面一项   shift:删除数组最前面一项
                if (this.txt.trim() == '') {
                    alert("请输入内容,再进行添加!")
                    return
                } else if (this.arr.includes(this.txt.trim())) {
                    alert("该内容已存在,请重新输输入其他内容")
                    this.txt = ''
                } else {
                    this.arr.unshift(this.txt)
                    this.txt = ''
                }
            },
            // 删除功能
            // 定义函数给形参,调用函数给实参
            del(index) {
                // splice(操作的元素的索引值,删除个数,添加的内容)
                this.arr.splice(index, 1);
            }
        }
    })
</script>

3.CSS样式部分

html 复制代码
    <style>
        .box {
            margin: 10px auto;
            width: 600px;
        }

        .list_con input {
            width: 540px;
        }

        .list ul {
            padding: 0;
        }

        .list li {
            list-style: none;
            border-bottom: 1px solid #ccc;
            padding: 15px 0;
        }

        .list li a {
            float: right;
            text-decoration: none;
        }
    </style>
  • 案例------To do list整体代码如下:
html 复制代码
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>To do list2</title>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>
    <style>
        .box {
            margin: 10px auto;
            width: 600px;
        }

        .list_con input {
            width: 540px;
        }

        .list ul {
            padding: 0;
        }

        .list li {
            list-style: none;
            border-bottom: 1px solid #ccc;
            padding: 15px 0;
        }

        .list li a {
            float: right;
            text-decoration: none;
        }
    </style>
</head>

<body>
    <div id='app'>
        <div class="box">
            <!-- 
                如何获取输入框内容,如何将获取到的内容展示到页面上 
                【将内容保存到数组中去】
            -->
            <h3>To do list</h3>
            <div class="list_con">
                <input type="text" v-model="txt">
                <button @click="add()">增加</button>
            </div>

            <div class="list">
                <!-- 
        连续出现的标签、标签块
        1.将标签、标签块重写一遍
        2.将重复出现的标签、标签块里面的"内容"保存到数组中去
        3.将v-for写在重复出现标签、标签块身上
     -->
                <ul>
                    <li v-for="item in arr">
                        <span>{{item}}</span>
                        <!-- 点击删除时候如何指定元素 -->
                        <a href="javascript:;" @click="del(index)">删除</a>
                    </li>
                </ul>
            </div>
        </div>
    </div>

</body>
<script>
    new Vue({
        el: '#app',
        data: {
            txt: "",    // 保存input框的内容
            arr: ["学习html", "学习css", "学习javascript"]
        },
        methods: {
            // 增加功能
            add() {
                // this.txt    // 输入框输入的内容
                // push:将内容添加到数组最后一项   pop:删除数组最后一项
                // unshift:将内容添加到数组最前面一项   shift:删除数组最前面一项
                if (this.txt.trim() == '') {
                    alert("请输入内容,再进行添加!")
                    return
                } else if (this.arr.includes(this.txt.trim())) {
                    alert("该内容已存在,请重新输输入其他内容")
                    this.txt = ''
                } else {
                    this.arr.unshift(this.txt)
                    this.txt = ''
                }
            },
            // 删除功能
            // 定义函数给形参,调用函数给实参
            del(index) {
                // splice(操作的元素的索引值,删除个数,添加的内容)
                this.arr.splice(index, 1);
            }
        }
    })
</script>

</html>
相关推荐
我真的是大笨蛋3 小时前
K8S-Pod(下)
java·笔记·云原生·容器·kubernetes
li35745 小时前
将已有 Vue 项目通过 Electron 打包为桌面客户端的完整步骤
前端·vue.js·electron
Icoolkj6 小时前
VuePress 与 VitePress 深度对比:特性、差异与选型指南
前端·javascript·vue.js
excel6 小时前
CNN 分层详解:卷积、池化到全连接的作用与原理
前端
excel6 小时前
CNN 多层设计详解:从边缘到高级特征的逐层学习
前端
honder试试7 小时前
焊接自动化测试平台图像处理分析-模型训练推理
开发语言·python
梁小憨憨7 小时前
zotero扩容
人工智能·笔记
^Rocky7 小时前
JavaScript性能优化实战
开发语言·javascript·性能优化
Hello_Embed7 小时前
STM32HAL 快速入门(十九):UART 编程(二)—— 中断方式实现收发及局限分析
笔记·stm32·单片机·嵌入式硬件·学习
ponnylv7 小时前
深入剖析Spring Boot启动流程
java·开发语言·spring boot·spring