vue中的事件修饰符、表单双向数据绑定和计算属性

目录

一、事件修饰符

二、表单双向数据绑定

模拟双向数据绑定(双向数据绑定底层原理)

三、计算属性

计算属性和methods方法区别?

计算属性和watch区别?


一、事件修饰符

  stop 阻止事件冒泡
  prevent 阻止事件默认行为 
  capture 事件捕获阶段执行
  self  仅当当前元素是event.target触发 
  once 执行一次事件 
  passive 与scroll滚动事件连用

<div id="app"><!-- capture 事件捕获阶段执行 --><div class="outer" @click.capture="outer"><!-- stop事件修饰符阻止事件冒泡 --><div class="inner" @click.stop="inner"></div></div><!-- self 事件修饰符 仅当前元素是event.target(当前事件触发元素)时才触发 事件修饰符可以连用 --><div class="outer" @click.capture.self="outer"><div class="inner" @click.capture="inner"></div></div><!-- once 事件修饰符 事件只绑定(生效)一次 --><div class="outer" @click.capture="outer"><div class="inner" @click.capture.once="inner"></div></div><!-- prevent事件修饰符 阻止元素默认行为 --><a href="https://wwww.baidu.com" @click.prevent="toJump">百度一下</a><!-- passive 事件修饰符 提升移动端滚动性能 --><div class="scroll" @scroll.passive="scroll">我是一个div我是一个div我是一个div我是一个div我是一个div我是一个div我是一个div我是一个div我是一个div我是一个div我是一个div我是一个div我是一个div我是一个div我是一个div我是一个div我是一个div我是一个div我是一个div我是一个div我是一个div</div><!-- 按键修饰符 按下按键之后才会触发 --><input type="text" @keyup.13="keyup"><input type="text" @keyup.enter="keyup"></div><script>let vm = new Vue({// 与模板绑定el: "#app",// 数据模型 存放vue变量data: {},// 存放方法和事件处理程序methods: {keyup(){console.log(event.keyCode);},scroll(){console.log('正在滚动');},toJump() {// 阻止a标签默认行为// event.preventDefault();},outer() {console.log('outer');},inner() {console.log('inner');// 阻止事件冒泡// event.stopPropagation();}},});</script>

二、表单双向数据绑定

  v-model 监听用户输入事件以更新数据 创建双向数据绑定 
  v-model修饰符:
    lazy  输入事件input事件 change事件 失焦或者按下回车
    number 将输入框双向绑定得数据设置为number类型
    trim  过滤绑定数据前后空格

<div id="app"><!-- v-model语法糖 可以根据表单控件类型正确更新元素  监听用户输入事件更新数据 -->{{form}}用户名:<input type="text" v-model="form.username"><br>密码:<input type="password" v-model="form.password"><br><label>男:<input type="radio" v-model="form.gender" value="male"></label><label>女:<input type="radio" v-model="form.gender" value="famale"></label><br>爱好:游泳:<input type="checkbox" v-model="form.hobbies" value="swimming">篮球:<input type="checkbox" v-model="form.hobbies" value="basketball">足球:<input type="checkbox" v-model="form.hobbies" value="football"><br>描述:<textarea v-model="form.desc" cols="30" rows="10"></textarea><br>城市:<select v-model="form.city"><optgroup label="一线城市"><option value="beijing">北京</option><option value="shanghai">上海</option><option value="guangzhou">广州</option></optgroup></select></div><script>let vm = new Vue({// 与模板绑定el:"#app",// 数据模型 存放vue变量data:{form:{hobbies:[]},},// 存放方法和事件处理程序methods: {},});</script>

模拟双向数据绑定(双向数据绑定底层原理)

    利用Object.defineProperty()

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><!-- 实现v-model --><p>极简版双向数据绑定</p><input type="text"><script>var p = document.querySelector('p');var input = document.querySelector('input');let obj = {name:""}Object.defineProperty(obj,'name',{get(){return obj.name},set(newValue){p.innerHTML = newValue}})// 监听用户输入框输入的事件input.oninput = function(){obj.name = event.target.value;}</script>
</body>
</html>

浏览器运行结果如下:


三、计算属性

       对data中数据进行逻辑处理返回一个响应式数据,基于响应式依赖(data),只要响应式依赖不发生改变,计算属性就不会重新计算,多次调用计算属性会返回之前计算得结果。有缓存性,计算属性默认只提供getter,只允许读取,不允许修改,想要修改计算属性,需要提供setter函数。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
</head>
<body><div id="app">{{msg.split('').reverse().join('')}}{{reverseMsg}}{{reverseMsg}}{{reverseMsg}}{{reverseMsg}}{{reverse()}}{{reverse()}}{{reverse()}}{{reverse()}}</div><script>let vm = new Vue({// 与模板绑定el:"#app",// 数据模型 存放vue变量data:{msg:'hello'},// 存放方法和事件处理程序methods: {reverse(){console.log('methods方法');return this.msg.split('').reverse().join('')}},// 计算属性--一般对data中数据处理后再返回一个数据 基于响应式依赖缓存  返回一个响应式依赖computed:{reverseMsg(){console.log('计算属性');return this.msg.split('').reverse().join('')}}});setTimeout(()=>{vm.msg = 'world'},2000)</script>
</body>
</html>

浏览器运行结果如下:

2s后:


计算属性和methods方法区别?

  1.计算属性有缓存性,响应式依赖不发生改变,多次调用计算属性会返回之前得计算结果。
  2.methods多次调用会多次执行函数,没有缓存性。
  3.计算属性一般不用于异步操作,methods可以处理异步操作。
  4.可以定于计算属性被修改,不仅可读。

计算属性和watch区别?

  1.计算属性具有缓存性,响应式依赖不发生改变计算属性不会重新计算,会返回之前得计算结果
  2.watch不具有缓存性,只要数据发生改变watch就会立即执行
  3.watch一般用于异步操作(监听分页)或者开销较大操作
  4.计算属性一般不用于异步操作,只提供getter需要修改需要设置setter函数


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

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

相关文章

Java常见原子性操作

在Java语言中&#xff0c;对基本数据类型的变量读取赋值操作都是原子性的&#xff0c;对引用类型的变量读取和赋值的操作也是原子性的&#xff0c;因此诸如此类的操作是不可被中断的&#xff0c;要么执行&#xff0c;要么不执行&#xff0c;正所谓一荣俱荣一损俱损。 原子操作…

Linux线程——互斥锁

概念 互斥量&#xff08;mutex&#xff09;从本质上来说是一把锁&#xff0c;在访问共享资源前对互斥量进行加锁&#xff0c;在访问完成后释放互斥量上的锁。对互斥量进行加锁后&#xff0c;任何其他试图再次对互斥量加锁的线程将会被阻塞直到当前线程释放该互斥锁。 如果释放…

【HCIP学习记录】OSPF之DD报文

1.OSPF报文格式 24字节 字段长度含义Version1字节版本&#xff0c;OSPF的版本号。对于OSPFv2来说&#xff0c;其值为2。Type1字节类型&#xff0c;OSPF报文的类型&#xff0c;有下面几种类型&#xff1a; 1&#xff1a;Hello报文&#xff1b;● 2&#xff1a;DD报文&#xff1…

美国联邦机动车安全标准-FMVSS

FMVSS标准介绍&#xff1a; FMVSS是美国《联邦机动车安全标准》&#xff0c;由美国运输部下属的国家公路交通安全管理局(简称NHTSA)具体负责制定并实施。是美国联邦政府针对机动车制定的安全标准&#xff0c;旨在提高机动车的安全性能&#xff0c;减少交通事故中的人员伤亡。F…

ubuntu无 root 权限安装 screen

网上的方法主要是如下图的方法&#xff0c;源码安装&#xff0c;但是我一直 make install失败显示没有权限 然后选择放弃&#xff0c;然后随便试了一下方法 2&#xff0c;成功 方法 1 方法 2 pip3 install screen结果&#xff1a;

生物识别应用指纹的算法是什么样的?有什么性能?

方案特点 • 采用金融级安全芯片 ACH512 的指纹模组&#xff0c;指纹和密码安全存储&#xff0c;云端数据安全传输 • 采用高性能指纹专用安全MCU芯片ACM32FP4&#xff0c;支持小点阵图像算法处理 • 支持80*64、88*112、96*96、160*160、192*192等像素传感器 • 已适配传…

Ubuntu系统使用Nginx搭建RTMP服务器

环境&#xff1a; 推流端 rockpi s 主控rk3308 运行ubuntu系统 服务端 ubuntu 播放器 VLC播放器 服务端安装依赖&#xff1a; apt-get install build-essential libpcre3 libpcre3-dev libssl-dev创建nginx编译目录&#xff1a; mkdir my_nginx_rtmp cd my_nginx_rtmp/下载 …

【Python基础】文件读写

文章目录 [toc]打开文件open()函数参数解析示例 文件路径绝对路径示例 相对路径示例 打开文件的模式常用模式 读文件示例 写文件示例 按行读写文件readline()示例 readlines()示例 writelines()示例 关闭文件示例finally语句示例 上下文管理器示例 自定义读写类示例 打开文件 …

计算机网络:物理层(编码与调制)

今天又学会了一个知识&#xff0c;加油&#xff01; 目录 一、基带信号与宽带信号 1、基带信号 2、宽带信号 3、选择 4、关系 二、数字数据编码为数字信号 1、非归零编码【NRZ】 2、曼彻斯特编码 3、差分曼彻斯特编码 4、归零编码【RZ】 5、反向不归零编码【NRZI】 …

查找Apple Watch的序列号有重要意思,主要有两种方法

如果你打算购买二手Apple Watch&#xff0c;你可能需要检查它的序列号或IMEI号&#xff0c;来确保可靠性。以下是如何从Apple Watch和iPhone中查找序列号。 在Apple Watch上查找序列号和IMEI 1、在Apple Watch上&#xff0c;按下手表表面的数字皇冠以打开应用程序网格或列表。…

【设计模式--行为型--访问者模式】

设计模式--行为型--访问者模式 访问者模式定义结构案例优缺点使用场景扩展分派动态分派静态分派双分派 访问者模式 定义 封装一些作用于某种数据结构中的各元素的操作&#xff0c;它可以在不改变这个数据结构的前提下定义作用于这些元素的新操作。 结构 抽象访问者角色&…

晶体管的工作状态判断和工作条件

晶体管是模拟电路中基础的器件&#xff0c;对于电子工程师来说&#xff0c;了解晶体管工作的条件和判断晶体管的工作状态都是非常基础的&#xff0c;本文将带大家一起学习或回顾一下。 一、晶体管工作的条件 1.集电极电阻Rc&#xff1a; 在共发射极电压放大器中&#xff0c;…

在Linux中遇到“没有可用软件包”的情况

1. 旧的或不完整的软件源 更新你的软件源列表 对于Ubuntu/Debian系统 sudo apt-get update 对于RHEL/CentOS系统&#xff0c;使用命令 sudo yum update 或 sudo dnf update&#xff08;取决于你的系统版本&#xff09; 添加其他软件源&#xff1a; 例如&#xff0c;你可以安…

HPM6750系列--第十篇 时钟系统

一、目的 上一篇中《HPM6750系列--第九篇 GPIO详解&#xff08;基本操作&#xff09;》我们讲解了HPM6750 GPIO相关内容&#xff0c;在进一步讲解其他外设功能之前我们有必要先讲解一下HPM6750的时钟系统。 时钟可以说是微控制器系统中的心脏&#xff0c;片上外设模块必须依赖时…

爱普生手机打印助手Epson Smart Panel下载分享

新一代智能打印Epson Smart Panel为您提供一站式打印服务&#xff0c;人性化装机助手&#xff0c;智能联网&#xff0c;快速开启远程微信打印&#xff0c;全新交互式设计&#xff0c;打印体验焕新升级&#xff1b; 根据手机不同可选下列不同下载方式&#xff1a; 人性化智能装机…

《每天一分钟学习C语言·一》

1、转义字符&#xff1a;\n换行&#xff0c;\t前进一个tab键&#xff0c;\b退格键 2、八进制前面有0&#xff0c;%o或者%#o表示八进制&#xff0c;十六进制前有0X&#xff0c;%0x或者%#0x表示十六进制 3、%u打印无符号数&#xff0c;%g显示小数&#xff0c;类似于%f&#xff…

给机器安装ubuntu

准备材料: 1.镜像iso&#xff08;地址:清华镜像源https://mirror.tuna.tsinghua.edu.cn/ubuntu-releases/20.04/ubuntu-20.04.6-live-server-amd64.iso 2.U盘&#xff08;4gb就行&#xff09; 3.制作启动盘工具&#xff08;地址:https://clone-audio-dataset-1309770014.co…

【开题报告】基于uniapp的家庭记账小程序的设计与实现

1.研究背景 随着社会经济的发展和人们生活水平的提高&#xff0c;家庭财务管理变得越来越重要。家庭记账是一种重要的财务管理方式&#xff0c;通过记录和分析家庭的收入和支出情况&#xff0c;可以帮助家庭成员更好地理解和掌握自己的财务状况&#xff0c;合理规划和管理家庭…

LibreNMS:从docker出发

引言 LibreNMS 是一个免费开源的网络监控和自动化工具&#xff0c;用于监视网络设备、服务器和应用程序的性能和状态。它提供了一个集中的管理平台&#xff0c;帮助管理员实时监控和管理整个网络基础设施。 以下是 LibreNMS 的一些主要特点和功能&#xff1a; 自动发现&#…

深度学习 | 大模型领域常见名词解释

预训练模型 预训练模型是在大规模数据集上进行了预先训练的模型&#xff0c;通常包含了通用的特征或知识。 通常用于迁移学习&#xff0c;即将预训练模型的知识迁移到新的任务中。 例子&#xff1a;BERT、GPT、VGG等。 训练好的模型&#xff1a; 训练好的模型是根据你的特定…