Vue day02 Computed和Watch
1.事件绑定
可以用 v-on 指令监听DOM 事件,并在触发时运行一些 JavaScript 代码。v-on 还可以接收一个需要调用的方法名称。
<button v-on:click="handler">good</button>
methods: {
handler: function (event) {
if (event) { alert(event.target.tagName) } //event
是原生 DOM 事件
}
}
除了直接绑定到一个方法,也可以在内联 JavaScript 语句中调用方法,通过$
event传递原生事件对象:
<button v-on:click="say('hi',$event)">Say hi</button>
methods: { say: function (message,event) { alert(message) } }
由于事件绑定在vue中使用概率较大,所以这里提供了简写形式
<button @click=“say(‘hi’,$event)”>Say hi
事件参数
在事件调用时,可以进行参数的传递 :
### html代码
<div id="app"><el-button @click="toAdd" type="primary" size="small">新增</el-button><div><el-table type="index" size="small" :data="tableData" style="width: 50%"><el-table-column prop="date" label="日期" width="180"></el-table-column><el-table-column prop="name" label="姓名" width="180"></el-table-column><el-table-column prop="address" label="地址"></el-table-column><el-table-column label="操作"><template slot-scope="scope"><el-button size="small" @click="toEdit(scope.row)" type="primary">编辑</el-button><el-button size="small" type="danger" @click="toDelete(scope.row.id)">删除</el-button></template></el-table-column></el-table></div><el-dialog :title="title" :visible.sync="dialogFormVisible"><el-form :model="form"><el-form-item label="时间" :label-width="formLabelWidth"><el-input v-model="form.date" autocomplete="off"></el-input></el-form-item><el-form-item label="姓名" :label-width="formLabelWidth"><el-input v-model="form.name" autocomplete="off"></el-input></el-form-item><el-form-item label="地址" :label-width="formLabelWidth"><el-input v-model="form.address" autocomplete="off"></el-input></el-form-item></el-form><div slot="footer" class="dialog-footer"><el-button @click="dialogFormVisible = false">取 消</el-button><el-button type="primary" @click="dialogFormVisible = false">确 定</el-button></div></el-dialog></div>
### js代码
<script>new Vue({el: "#app",data: {dialogFormVisible: false,formLabelWidth: "120px",form: {},title: '',tableData: [{id: 1,date: '2016-05-02',name: '王小虎',address: '上海市普陀区金沙江路 1518 弄'}, {id: 2,date: '2016-05-04',name: '王小虎',address: '上海市普陀区金沙江路 1517 弄'}, {id: 3,date: '2016-05-01',name: '王小虎',address: '上海市普陀区金沙江路 1519 弄'}, {id: 4,date: '2016-05-03',name: '王小虎',address: '上海市普陀区金沙江路 1516 弄'}]},methods: {toAdd() {this.dialogFormVisible = true;this.form = {};this.title = '新增数据'},toEdit(row) {this.form = { ...row };this.dialogFormVisible = true;this.title = '修改数据';},toDelete(id) {this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).then(() => {this.tableData.splice(id,1)this.$message({type: 'success',message: '删除成功!'});}).catch(() => {this.$message({type: 'info',message: '已取消删除'});});}}})</script>
进行事件绑定时,可以将v-on:事件名缩写为**@事件名**,此方式经常使用 :
事件修饰符
事件修饰符
在事件处理程序中调用 event.preventDefault() 或 event.stopPropagation() 是非常常见的需求。Vue提供了更好的方式:事件处理函数只有纯粹的数据逻辑,而不是去处理 DOM 事件细节,通过事件修饰符来完成这些细节。
<button v-on:click.prevent="handler">点我点我</button>
常见修饰符如下
.stop 停止事件冒泡
.prevent 阻止事件默认行为
.capture 在事件捕获阶段执行事件处理函数
.self 只当在 event.target 是当前元素自身时触发处理函数
.once 事件处理函数执行一次后解绑
.passive 滚动事件的默认行为 (即滚动行为) 将会立即触发 ,一般与scroll连用,能够提升移动端的性能
按键修饰符
一般与keyup事件类型配合使用
.enter、.tab、.delete、.esc、.space、.up、.down、.left、.right
.ctrl、.alt、.shift、.meta
鼠标修饰符mouseup事件
.left、.right、.middle
### js代码
new Vue({el: "#app",data: {msg: '事件修饰符'},methods: {keyupHandle() {console.log('按下某些特殊键');},toJump() {console.log('跳转');alert(1);},outer(e) {// e.target是触发事件的源头元素,目标元素// e.currentTarget 当前执行事件处理程序的元素,当前目标元素// console.log('outer', e.target, e.currentTarget);console.log('outer')for (let i = 0; i < 100; i++) {console.log(i);}},inner(e) {// e.stopPropagation();// console.log('inner', e.target, e.currentTarget);console.log('inner');}}})
### html代码
<div id="app"><!-- <input type="text" @keyup.enter="keyupHandle"> --><input type="text" @keyup.13="keyupHandle"><!-- <input type="text" @mouseup.left="keyupHandle"> -->{{msg}}<a @click.prevent="toJump" href="http://www.baidu.com">百度一下</a><!-- 点击inner event.target --><!-- <div class="outer" @click.self.once="outer"> --><!-- <div class="outer" @click.self="outer"> --><!-- <div class="outer" @click.capture="outer"> --><div class="outer" @scroll.passive="outer">outer<div class="inner" @click="inner"><!-- <div class="inner" @click.stop="inner"> -->inner</div></div></div>
表单
可以用 v-model 指令在表单
<input>
、<textarea>
及<select>
元素上创建双向数据绑定。 它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇,但 v-model 本质上不过是语法糖。它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。使用v-model绑定了值, 那么name属性就可以不用写了。
### html代码
<div id="app">{{msg}}<br>{{stu}}<br><!-- 用户名:<input type="text" v-model.lazy="stu.username"> -->用户名:<input type="text" v-model.trim="stu.username"><br><!-- .number修饰符,可以将采集到的数据转为number类型,然后再存储到数据模型中 -->年龄:<input type="text" v-model.number="stu.age"><br><!-- 性别 -->性别:<input type="radio" value="male" v-model="stu.gender">男<input type="radio" value="female" v-model="stu.gender">女<br><!-- 爱好 -->爱好:<input type="checkbox" value="basketball" v-model="stu.hobby">篮球<input type="checkbox" value="swimming" v-model="stu.hobby">游泳<input type="checkbox" value="dancing" v-model="stu.hobby">跳舞<br><!-- 城市 -->城市:<!-- <select multiple v-model="stu.city"> --><select v-model="stu.city"><option value="shanghai">上海</option><option value="beijing">北京</option><option value="guangzhou">广州</option></select><br><!-- 简介 -->简介:<textarea v-model="stu.info" cols="30" rows="10"></textarea></div>
### js代码new Vue({el: '#app',data: {msg: 'hello',stu: {// 复选框hobby: []}},methods: {}})
watch(监听器 监听属性)
当需要在数据变化时执行异步或开销较大的操作时,使用监听器是最有用的
虽然计算属性在大多数情况下更合适,但有时也需要一个自定义的侦听器。这就是为什么 Vue 通过 watch 选项提供了一个更通用的方法,来响应数据的变化。当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的 。
### html代码
<div id="app">{{msg}}<br>a:<input type="text" v-model.number="a"><br>+<br>b:<input type="text" v-model.number="b"><br>=<br><output>{{total}}</output></div>
### js代码new Vue({el: '#app',data: {msg: 'hello',a: 0,b: 0,total: 0},methods: {},// 监听 侦听watch: {a(newValue, oldValue) {this.total = this.a + this.b;},b(newValue, oldValue) {this.total = this.b + this.a;}}})
### 深度监听
### js代码new Vue({el: '#app',data: {msg: 'hello',a: 1,obj: {name: 'zhangsan',age: 12},},watch: {a(newValue, oldValue) {console.log('a数据发生变化...');},/* obj(newValue, oldValue) {console.log('obj数据发生变化...');} */// 深度监听obj: {handler(newValue, oldValue) {console.log('obj数据发生变化...');},// 深度监听deep: true}},methods: {changeObj() {// 更改内部数据this.obj.name = 'lisi';}}})
### html代码<div id="app">{{msg}}<br>{{obj}}<button @click="changeObj">更改obj</button></div>
computed(计算属性)
计算属性 有依赖关系的数据
我们希望一个变量是经过某种计算然后输出而不是直接输出的时候可以使用到计算属性
计算属性是基于它们的响应式依赖进行缓存的。只在相关响应式依赖发生改变时它们才会重新求值。而每次调用函数都会导致函数的重新执行。
### html代码
<div id="app">{{msg}}<br>a:<input type="text" v-model.number="a"><br>+<br>b:<input type="text" v-model.number="b"><br>=<br>{{total}}</div>
### js代码new Vue({el: '#app',data: {msg: 'hello',a: 0,b: 0,// total: 0},// 计算属性computed: {total(){console.log('计算属性');// return 111return this.a+this.b}},methods: {}})
面试题
*** watch和computed的区别 computed1. 具有缓存性,页面重新渲染值不变化,计算属性会立即返回之前的计算结果,而不必再次执行函数2.计算属性计算某一个属性得变化,如果某一个值改变了,计算属性会见监听到进行返回watch1. 监听值的变化,执行异步操作【axios请求】’$route.query‘:{this.loadArticle()}2. 无缓存性,只有当当前值发生变化时才会执行/响应
console.log('计算属性');// return 111return this.a+this.b}},methods: {}
})
```javascript
面试题
*** watch和computed的区别 computed1. 具有缓存性,页面重新渲染值不变化,计算属性会立即返回之前的计算结果,而不必再次执行函数2.计算属性计算某一个属性得变化,如果某一个值改变了,计算属性会见监听到进行返回watch1. 监听值的变化,执行异步操作【axios请求】’$route.query‘:{this.loadArticle()}2. 无缓存性,只有当当前值发生变化时才会执行/响应
相关文章:
Vue day02 Computed和Watch
1.事件绑定 可以用 v-on 指令监听DOM 事件,并在触发时运行一些 JavaScript 代码。v-on 还可以接收一个需要调用的方法名称。 <button v-on:click"handler">good</button> methods: { handler: function (event) { if (event) { alert(event.t…...

【Java】一只小菜坤的编程题之旅【3】
文章目录 1丶判定是否互为字符重排2、杨辉三角3丶某公司的1个面试题(字符串包含问题) 1丶判定是否互为字符重排 这个题我们用一个非常简单的思想就能实现,我们先将字符串转换为字符数组,然后对字符数组进行排序,然后再…...
全面掌握 Jaeger 分布式调用链路跟踪理论和实战,Go 为所有使用 go-resty 库发起 HTTP 请求集成链路跟踪 jaeger(附源码)
全面掌握 Jaeger 分布式调用链路跟踪理论和实战,Go 为所有使用 go-resty 库发起 HTTP 请求集成链路跟踪 jaeger(附源码)。 介绍一个开源的分布式跟踪系统 Jaeger,首先从理论基础知识开始学习,将学习如何在 HTTP 请求中集成链路跟踪,以及如何在 GORM 框架实现,最后学习 …...
vue键盘和鼠标事件
1、键盘事件 **按Enter键** keyup.enter**按PageDown键** keyup.page-down **按Tab键** keyup.tab **按Delete键** keyup.delete **按ESC键** keyup.esc**按Space键** keyup.space **按↑(Up)键** keyup.up**按↓(Down)键** keyup…...
Chrome 手动代理设置 HTTP/Socks5
1、安装代理插件:SwitchyOmega 在线安装 从 Chrome 应用商店 安装,如果您无法从该链接安装,请使用下面的离线安装。 离线安装 ①、去 Github 下载 最新版安装包 ,或者直接 本地下载 文件进行安装。 ②、下载安装文件后…...

SpringBoot第35讲:SpringBoot集成连接池 - 默认连接池HikariCP
SpringBoot第35讲:SpringBoot集成连接池 - 默认连接池HikariCP 本文是SpringBoot第35讲,主要介绍数据库连接池,以及SpringBoot集成默认的HikariCP的实践。 文章目录 SpringBoot第35讲:SpringBoot集成连接池 - 默认连接池HikariCP1…...

选择最适合自己的笔记本
选择最适合自己的笔记本电脑 一、了解笔记本品牌一线品牌准一线品牌二线品牌三线品牌 二、笔记本入手渠道笔记本入手渠道 三、根据需求选择机型使用需求1.日常使用2.商务办公、财务3.轻度剪辑、ps4.代码5.创意设计6.游戏 四、笔记本电脑配置如何选1.cpu2.显卡(GPU&a…...
前端安全:探秘安全 HTTP 头的设置
在当今数字化时代,前端安全至关重要。除了应对常见的攻击方式外,通过设置安全 HTTP 头,我们可以加强网站的安全性,减少潜在的威胁。本文将为您详细解释什么是安全 HTTP 头,以及如何通过设置它们来保护您的前端应用。 1…...

python爬虫——爬虫伪装和反“反爬”
前言 爬虫伪装和反“反爬”是在爬虫领域中非常重要的话题。伪装可以让你的爬虫看起来更像普通的浏览器或者应用程序,从而减少被服务器封禁的风险;反“反爬”则是应对服务器加强的反爬虫机制。下面将详细介绍一些常见的伪装和反反爬技巧,并提…...
vue3 使用 element-china-area-data 实现地区选择器
官方地址:https://www.npmjs.com/package/element-china-area-data?activeTabreadme 在线示例:https://plortinus.github.io/element-china-area-data/index.html 实际使用 <el-col :span"12"><el-form-item label"所处城市&…...

STM32自带的DSP库的滤波初体验(一)
最近在弄STM32自带的DSP库里的滤波,记录一下: arm_fir_instance_q15 instance_q15_S; #define NUM_TAPS 16 //滤波系数的个数 #define BLOCK_SIZE 32 q15_t firStateF32[BLOCK_SIZE NUM_TAPS]; q15_t Fir_Coeff[NUM_TAPS] {-79, -136, 312, 6…...
go kratos protobuf 接收动态JSON数据
前言 google.protobuf.Struct 是 Google Protocol Buffers 中的一种特殊类型,用于表示动态的键值对数据。它可以存储任意类型的数据,并提供了方便的方法来访问和操作这些数据。 Struct 类型通常用于在不事先知道数据结构的情况下传递和处理配置、参数或其…...
Python学习笔记第五十四天(Pandas DataFrame)
Python学习笔记第五十四天 Pandas 数据结构 - DataFrame使用列表创建使用 ndarrays 创建使用字典创建返回多行数 后记 Pandas 数据结构 - DataFrame DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符…...

Docker镜像查看下载删除镜像文件的相关命令
1.镜像相关命令 本地查看有哪些镜像文件: docker images镜像的名称就是我们常见的一些软件,镜像相当于把软件和软件所需要的运行环境打包到一个镜像文件里面,将来在通过这个镜像文件创建出对应的容器,容器有了以后这些软件自动的…...
1. VisionOS平台介绍
介绍 VisionOS 可实现与现实世界无缝集成并与其他虚拟内容共存的 3D 多任务体验。这为个人生产力、生活方式和娱乐应用打开了一个充满新可能性的世界,并为开发人员打开了一个全新的市场。然而,它也带来了围绕多任务处理和与身体互动的新挑战。Unity Poly…...
【C#】设置有线网卡IP地址,子网掩码,网关,DNS
方法 public partial class ComputerInfo{/// <summary>/// 设置IP地址,子网掩码,网关,DNS/// </summary>public static List<NetworkAdapterInfo> SetIpAddressSubMaskDnsGeteway(string ipAddress, string subMask, stri…...
LVS-DR集群及NGINX负载均衡
LVS-DR集群 原理: 1. 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间 2. PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发往INPUT链 3. IPVS是工作在…...

React如何配置env环境变量
React版本: "react": "^18.2.0" 1、在package.json平级目录下创建.env文件 2、在‘.env’文件里配置环境变量 【1】PUBLIC_URL 描述:编译时文件的base-href 官方描述: // We use PUBLIC_URL environment variable …...

VR全景智慧文旅,用科技助力旅游业振兴
引言: 近年来,科技的迅猛发展将我们带入一个全新的数字化时代,而虚拟现实(Virtual Reality,简称VR)技术则以其令人惊叹的全新方式,影响着各个领域。其中,旅游业作为人们探索世界、体…...

系统架构设计专业技能 · 系统安全分析与设计(四)【加解密、数字信封、信息摘要、数字签名、数字书证、网络安全、信息安全】
系列文章目录 系统架构设计专业技能 网络规划与设计(三)【系统架构设计师】 系统架构设计专业技能 系统安全分析与设计(四)【系统架构设计师】 系统架构设计高级技能 软件架构设计(一)【系统架构设计师…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...

51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...

css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...

抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...