Vue核心基础5:数据监测、收集表单数据、过滤器

1 数据监测

【代码】

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>总结</title>
    <script src="../js/vue.js"></script>
</head>

<body>
    <div id="root">
        <h2>学生信息</h2>
        <!-- 添加按钮,实现功能 -->
        <button @click="student.age++">年龄+1</button>
        <button @click="addSex">添加性别属性,默认值为男</button>
        <button @click="updateSex">修改性别</button>
        <button @click="addFriend">在朋友列表首位添加一个朋友</button>
        <button @click="updatefirstF">修改第一个朋友的名字为:小章</button>
        <button @click="addHobby">添加一个爱好</button>
        <button @click="updatefirstHobby">修改第一个爱好为:吃饭</button>



        <h3>姓名:{{student.name}} ---- 年龄:{{student.age}}</h3>
        <h3 v-if="student.sex">性别:{{student.sex}}</h3>
        <h3>朋友</h3>
        <ul>
            <li v-for="(fr,index) in student.friends" :key="index">姓名:{{fr.name}} -----
                年龄:{{fr.age}}
            </li>
        </ul>

        <h3>爱好</h3>
        <ul>
            <li v-for="(h,index) in student.hobby" :key="index">{{h}}</li>
        </ul>
    </div>
    <script>
        // 实现后添加的数据也能有响应式的功能
        const vm = new Vue({
            el: '#root',
            data: {
                name: 'Vue',
                address: '北京',
                student: {
                    name: '张三',
                    age: 18,
                    hobby: ['学习', '喝酒', '烫头'],
                    friends: [
                        { name: '李四', age: 32 },
                        { name: '王五', age: 29 }
                    ]
                }
            },
            methods: {
                addSex() {
                    // 方法1:
                    // vm.$set(vm.student, 'sex', '男')

                    // 方法2:
                    Vue.set(this.student, 'sex', '男')
                },
                updateSex() {
                    this.student.sex = '女'
                },
                addFriend() {
                    this.student.friends.unshift({ name: '赵六', age: 30 })
                },
                updatefirstF() {
                    this.student.friends[0].name = '小章'
                },
                addHobby() {
                    this.student.hobby.unshift('看片')
                },
                updatefirstHobby() {
                    this.student.hobby.splice(0, 1, '吃饭')
                    // Vue.set(this.student.hobby, 0, '吃饭')
                }

            },
        })
    </script>
</body>

</html>

总结: 


2 收集表单数据

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>收集表单数据</title>
    <script src="../js/vue.js"></script>
</head>

<body>
    <div id="root">
        <form action="" @submit.prevent="submit">
            <!-- 也可以直接放入label标签中 -->
            <!-- <label>密码:
                <input type="password">
            </label> -->

            <!-- 修饰符  trim, number, lazy -->
            <!-- v-model.trim  去掉前后空格 -->
            <label for="userName">账号:</label>
            <input type="text" id="userName" v-model.trim="userInfo.account"><br>
            <label for="passWord">密码:</label>
            <input type="password" id="passWord" v-model.trim="userInfo.password"><br>

            性别:
            <input type="radio" name="sex" checked v-model="userInfo.sex" value="男">男
            <input type="radio" name="sex" v-model="userInfo.sex" value="女">女<br>

            年龄:
            <input type="number" v-model.number="userInfo.age"><br>
            <!-- v-model.number 将写的内容收集成数字类型 -->

            爱好:
            学习<input type="checkbox" name="" v-model="userInfo.hobby" value="学习">
            吃饭<input type="checkbox" name="" v-model="userInfo.hobby" value="吃饭">
            睡觉<input type="checkbox" name="" v-model="userInfo.hobby" value="睡觉"><br>

            所属校区:
            <select v-model="userInfo.city">
                <option value="">请选择</option>
                <option value="bj">北京</option>
                <option value="nj">南京</option>
                <option value="sh">上海</option>
                <option value="sz">苏州</option>
            </select>
            <br><br>

            其它信息:<br>
            <!-- 不希望实时收集  v-model.lazy -->
            <textarea name="" id="" cols="30" rows="10" v-model.lazy="userInfo.other">
            </textarea>
            <br><br>

            <input type="checkbox" name="" id="" v-model="userInfo.agreement">
            阅读并接受用户协议<a href="http://www.baidu.com">用户协议</a>
            <br><br><br>

            <button>提交</button>

        </form>
    </div>
    <script>
        const vm = new Vue({
            el: '#root',
            data: {
                userInfo: {
                    account: '',
                    password: '',
                    sex: '',
                    hobby: [],
                    city: '',
                    other: '',
                    agreement: '',
                    age: ''
                }

            },
            methods: {
                submit() {
                    console.log(JSON.stringify(this.userInfo))
                }
            },
        })
    </script>
</body>

</html>

总结:


3 过滤器

【代码】

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>过滤器</title>
    <script src="../js/vue.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/dayjs/1.11.9/dayjs.min.js"></script>
</head>

<body>
    <div id="root">
        <h2>显示格式化后的当前时间</h2>
        <!-- 1. 计算属性实现 -->
        <h3>{{forTime}}</h3>

        <!-- 2. methods实现 -->
        <h3>{{getTime()}}</h3>

        <!-- 3.过滤器实现 -->
        <h3>{{time | formatTime}}</h3>

        <!-- 过滤器传参 -->
        <h3>{{time | formatTime('YYYY-MM-DD')}}</h3>

        <!-- 截取 多个过滤器的串联-->
        <h3>{{time | formatTime('YYYY-MM-DD') | mySlice}}</h3>

    </div>
    <script>
        // 配置全局的过滤器
        Vue.filter('mySlice', function (value) {
            return value.slice(0, 4)
        })
        

        const vm = new Vue({
            el: '#root',
            data: {
                time: 1707209007850
            },
            computed: {
                forTime() {
                    return dayjs(this.time).format('YYYY-MM-DD HH:mm:ss')
                }
            },
            methods: {
                getTime() {
                    return dayjs(this.time).format('YYYY-MM-DD HH:mm:ss')
                }
            },

            // 局部过滤器
            filters: {
                formatTime(time, str = 'YYYY-MM-DD HH:mm:ss') {

                    return dayjs(time).format(str)
                },
                mySlice(value) {
                    return value.slice(0, 4)
                }
            }
        })
    </script>
</body>

</html>

总结:

 

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

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

相关文章

vue项目文件夹介绍

目录 Vue项目目录结构 项目介绍: node_modules 文件及子目录 src目录 assets 文件夹 components 文件夹 实例:简单的注册并使用组件 Vue项目目录结构 项目介绍: node_modules 文件及子目录 这个文件夹里面全部都是node的一些基础的依赖包&#xff0c;当我们拓展的安…

C++ dfs状态的表示(五十三)【第十三篇】

今天我们将来求解N皇后问题。 1.N皇后问题 N 皇后问题是一个经典的问题,在一个 NN 的棋盘上放置 N 个皇后,每行刚好放置一个并使其不能互相攻击(同一行、同一列、同一斜线上的皇后都会自动攻击)。 上图就是一个合法的 8 皇后的解。 N 皇后问题是指:计算一共有多少种合法的…

Java String源码剖析+面试题整理

由于字符串操作是计算机程序中最常见的操作之一&#xff0c;在面试中也是经常出现。本文从基本用法出发逐步深入剖析String的结构和性质&#xff0c;并结合面试题来帮助理解。 String基本用法 在Java中String的创建可以直接像基本类型一样定义&#xff0c;也可以new一个 Str…

Pandas深度解析GroupBy函数的妙用技巧【第75篇—GroupBy函数】

Pandas深度解析GroupBy函数的妙用技巧 数据处理和分析中&#xff0c;Pandas是一款非常强大的Python库&#xff0c;提供了丰富的数据结构和功能&#xff0c;使得数据分析变得更加简便高效。其中&#xff0c;GroupBy函数是Pandas中一个重要且常用的功能&#xff0c;通过它我们可…

【2024.02.11】定时执行专家 V6.9 龙年春节版 - 下载地址更新日志

目录 ◆ 最新版下载链接 ◆ 软件更新日志 – TimingExecutor Full Change Log ▼2024-02-11 V6.9 ▼2023-06-16 V6.8.2 ▼2023-02-27 V6.7 ▼ 2023-01-23 V6.6 ▼ 2023-01-20 V6.5 ▼ 2022-12-25 V6.4 ▼ 2022-11-15 V6.3 ▼ 2022-10-01 V6.2 ▼ 2022-07-…

wsl 安装minikube

Minikube是一种轻量化的Kubernetes集群&#xff0c;专为开发者和学习者设计&#xff0c;以便他们能够更好地学习和体验Kubernetes的功能。它利用个人PC的虚拟化环境&#xff0c;实现了Kubernetes的快速构建和启动。目前&#xff0c;Minikube已经支持在macOS、Linux和Windows平台…

Python中使用opencv-python进行人脸检测

Python中使用opencv-python进行人脸检测 之前写过一篇VC中使用OpenCV进行人脸检测的博客。以数字图像处理中经常使用的lena图像为例&#xff0c;如下图所示&#xff1a; 使用OpenCV进行人脸检测十分简单&#xff0c;OpenCV官网给了一个Python人脸检测的示例程序&#xff0c;…

每日一个shell脚本之计算器

每日一个shell脚本之计算器 源码 read -p "请输入需要计算的数字公式:" numnumsecho "$num" | bc -lecho "${num}${nums} "使用 复制粘贴进一个.sh结尾的文件,sh 文件名.sh即可运行

人工智能三子棋-人机对弈-人人对弈,谁会是最终赢家?

✅作者简介&#xff1a;大家好我是原始豌豆&#xff0c;感谢支持。 &#x1f194;本文由 原始豌豆 原创 CSDN首发&#x1f412; 如需转载还请通知⚠ &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​ &#x1f4e3;系列专栏&#xff1a;C语言项目实践…

第9讲用户信息修改实现

用户信息修改实现 后端修改用户昵称&#xff1a; /*** 更新用户昵称* param wxUserInfo* param token* return*/ RequestMapping("/updateNickName") public R updateNickName(RequestBody WxUserInfo wxUserInfo,RequestHeader String token){if(StringUtil.isNot…

依赖注入的艺术:编写可扩展 JavaScript 代码的秘密

1. 依赖注入 在 JavaScript 中&#xff0c;依赖注入&#xff08;Dependency Injection&#xff0c;简称 DI&#xff09;是一种软件设计模式&#xff0c;通过这种模式&#xff0c;可以减少代码模块之间的紧耦合。依赖注入允许开发者将模块的依赖关系从模块的内部转移到外部&…

JAVA学习笔记9

1.Java API 文档 1.java类的组织形式 2.字符类型(char) 1.基本介绍 ​ *字符类型可以表示单个字符&#xff0c;字符类型是char&#xff0c;char是两个字节&#xff08;可以存放汉字&#xff09;&#xff0c;多个字符我们用字符串String ​ eg:char c1 ‘a’; ​ char c2…

机器学习:过拟合和欠拟合的介绍与解决方法

过拟合和欠拟合的表现和解决方法。 其实除了欠拟合和过拟合&#xff0c;还有一种是适度拟合&#xff0c;适度拟合就是我们模型训练想要达到的状态&#xff0c;不过适度拟合这个词平时真的好少见。 过拟合 过拟合的表现 模型在训练集上的表现非常好&#xff0c;但是在测试集…

京东云StarDB for openGauss实现混合多云场景元数据安全可控

推进产业数字化&#xff0c;构筑数智供应链技术底座&#xff0c;绕不开全球信息技术基础三大件之一的数据库。以技术创新为手段&#xff0c;以满足未来业务需求为目标&#xff0c;京东云自主研发的分布式数据库StarDB在长期的业务实践过程中不断进化&#xff0c;在海量且复杂的…

Linux中FIFO管道

介绍&#xff1a; FIFO被称为命名管道&#xff0c;pipe只能用于有血缘关系的进程间通信&#xff0c;但通过FIFO&#xff0c;不相关的进程也可以进程间通信。 FIFO是linux基础文件类型的一种&#xff08;文件类型为p&#xff09;&#xff0c;FIFO文件在磁盘上没有数据块&#…

五(一)java高级-集合-集合与迭代器(二)

5.1.2 Iterator迭代器 1、Iterator 所谓迭代器&#xff1a;就是用于挨个访问集合元素的工具/对象 方法&#xff1a; boolean hasNext():判断当前遍历集合后面是否还有元素可以迭代Object next():取出当前元素&#xff0c;并往后移→noSuchelementExceptionvoid remove():删…

阿里云带宽计费模式怎么选?如何收费的?

阿里云服务器带宽计费模式分为“按固定带宽”和“按使用流量”&#xff0c;有什么区别&#xff1f;按固定带宽是指直接购买多少M带宽&#xff0c;比如1M、5M、10M、100M等&#xff0c;阿里云直接分配用户所购买的带宽值&#xff0c;根据带宽大小先付费再使用&#xff1b;按使用…

锐捷(二十一)全局地址绑定

vlan划分和vlanif接口配置略&#xff0c;注意vlanif接口里要no shutdown配置如下&#xff1a; Address-bind 192.168.1.1 AAAA.BBBB.CCCCAddress-bind uplink g0/0Address-bind binding-filter loggingAddress-bind install 此时&#xff0c;IP为192.168.1.1 mac地址为AAAA.B…

Win10截图的四种方式

截图不一定要依靠通讯软件&#xff0c;现在系统自己就带有这些功能。 1.Win Shift S组合键&#xff1a;选择微信截图&#xff0c;部分截图&#xff0c;随心所欲&#xff1b; 2.Win W组合键&#xff1a;呼出屏幕右侧的工作区&#xff0c;选择屏幕草图&#xff0c;支持裁剪、编辑…

《SQLi-Labs》05. Less 29~37

title: 《SQLi-Labs》05. Less 29~37 date: 2024-01-17 22:49:10 updated: 2024-02-12 18:09:10 categories: WriteUp&#xff1a;Security-Lab excerpt: HTTP 参数污染&#xff0c;联合注入、宽字节注入。 comments: false tags: top_image: /images/backimg/SunsetClimbing.p…