Vue——监听器watch
使用watch来侦听data中数据的变化,watch中的属性(watch是对象格式)一定是data 中已经存在的数据。
使用场景:数据变化时执行异步或开销比较大的操作。
a. 监听器监听data中数据的变化(当前)
b. 监听器watch属性值是一个对象
c. 监听器对象里的属性就是data中已经存在的数据的名
d. 监听器里面属性的值是一个处理函数。函数有2个形参:新值、旧值
e. watch默认只能监听字面量(data中的表面数据,不能监听data中的数组对象等里面数据的变化)
想要监听对象里面的数据,需要深度监听
语法:
objname: {handler(val),deep: true}
函数handler参数就一个:对象是引用传值
深度监听的处理函数的名字handler不能变其他的,只能是这个名字
watch与computed的区别?
a. 在实现相同功能的时候,计算属性的代码复杂度要比监听器要低;
b. 计算属性支持深度监听(默认)
后期使用上如何选择?
a. 能用计算属性就用计算属性;
b. 如果是异步等代码,这个时候可以优先考虑watch
c. 在深度监听的时候建议考虑计算属性
d. 只是学习测试的时候,看你心情
<div class='app'>
<input type="text" placeholder="姓" v-model="xing">
<input type="text" placeholder="名" v-model="ming">
<input type="text" placeholder="姓名" v-model="xm" >
</div>
</body>
<script src='./js/vue.js'></script>
<script>
new Vue({
el: '.app',
data: {
message: '',
directives: '',
xing:'',
ming:'',
xm:'',
},
watch:{
// 监听姓的变化,具有两个参数,分别表示新的数据和旧的数据
xing:function(x,j){
// console.log(x,j);
// 将新的数据复制到“姓名”中
this.xm = x + this.ming
},
ming:function(x,j){
this.xm = this.xing + x
}
}
})
深度监听:
将需要监听的数据放置到一个对象中,在html标签元素的自定义属性v-model的值上添加对象的名称,最后在监听中使用深度监听的语法
HTML语句
<input type="text" placeholder="姓" v-model="name.xing">
<input type="text" placeholder="名" v-model="name.ming">
<input type="text" placeholder="姓名" v-model="name.xm" >
//数据:
data: {
name:{
xing:'',
ming:'',
xm:'',
}
}, //监听:
watch:{
// 监听这个对象
name:{
// 第一个值适用于监听的函数,具有一个参数,表示这个对象
handler(val){
// console.log(val)
val.xm = val.xing + val.ming
},
// 深度监听的标志
deep:true
}
}
使用计算属性
HTML
<input type="text" placeholder="姓" v-model="xing">
<input type="text" placeholder="名" v-model="ming">
<input type="text" placeholder="姓名" v-model="xm" >
直接在data里面添加:
xing:'',
ming:'',
计算属性:
computed:{
xm(){
return this.xing + this.ming
}
}
使用计算属性(深度):
HTML更改
<input type="text" placeholder="姓" v-model="name.xing">
<input type="text" placeholder="名" v-model="name.ming">
<input type="text" placeholder="姓名" v-model="xm" >
数据修改
name:{
xing:'',
ming:'',
}
计算属性
computed:{
xm(){
return this.name.xing + this.name.ming
}
}
Vue——监听器watch的更多相关文章
- vue监听器watch & 计算属性computed
侦听器watch vue中watch是用来监听vue实例中的数据变化 watch监听时有几个属性: handle:其值是一个回调函数,就是监听对象对话的时候需要执行的函数 deep:其值true 或者 ...
- Vue 监听器和计算属性到底有什么不同?
各自的适用场景 计算属性临时快照 官方文档对于计算属性提到了一个重要的点子--"临时快照"(可能就是前面说的计算属性缓存),每当源状态发生变化时,就会创建一个新的快照. 有时候创建 ...
- Vue.js-05:第五章 - 计算属性与监听器
一.前言 在 Vue 中,我们可以很方便的将数据使用插值表达式( Mustache 语法)的方式渲染到页面元素中,但是插值表达式的设计初衷是用于简单运算,即我们不应该对差值做过多的操作.当我们需要对差 ...
- vue的计算属性computed和监听器watch
<template> <div> this is A.vue <br> <!--计算属性--> <label for="msg" ...
- Vue学习3:计算属性computed与监听器
下面是计算属性相关代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- Vue(基础三)_监听器与计算属性
一.前言 本文主要涉及: 1.watch()监听单个属性 2.computed可以监听多个属性 3.点击li标签切换音乐案例 二.主要内容 1.watch()监听器(监听单一数据) (1)监听 ...
- VUE 学习笔记 四 计算属性和监听器
1.计算属性 对于任何复杂逻辑,你都应当使用计算属性 <div id="example"> <p>Original message: "{{ me ...
- Vue双向绑定的实现原理系列(三):监听器Observer和订阅者Watcher
监听器Observer和订阅者Watcher 实现简单版Vue的过程,主要实现{{}}.v-model和事件指令的功能 主要分为三个部分 github源码 1.数据监听器Observer,能够对数据对 ...
- vue 双向数据绑定的实现学习(二)- 监听器的实现
废话:上一篇https://www.cnblogs.com/adouwt/p/9928278.html 提到了vue实现的基本实现原理:Object.defineProperty() -数据劫持 和 ...
随机推荐
- 第15.16节 PyQt(Python+Qt)入门学习:PyQt中的信号(signal)和槽(slot)机制以及Designer中的使用
老猿Python博文目录 老猿Python博客地址 一.引言 前面一些章节其实已经在使用信号和槽了,但是作为Qt中最重要的机制也是Qt区别与其他开发平台的重要核心特性,还是非常有必要单独介绍. 二.信 ...
- CobaltStrike3.14&3.8安装&中文乱码解决
工具简介 Cobalt Strike 一款以 Metasploit 为基础的 GUI 框架式渗透测试工具,集成了端口转发.服务扫描,自动化溢出,多模式端口监听,exe.powershell 木马生成等 ...
- 记阿里云 RDS MySQL 的一个大坑
花了一个下午的时间,终于把一个阿里云 RDS MySQL 的一个大坑填上了,解决方法令人匪夷所思!绝对会让各位看官感到大吃一惊,阿里云 RDS MySQL 居然有这样 xx 的大坑! 问题 最近应业务 ...
- zookeeper未授权访问渗透测试及修复方法
zookeeper未授权访问危害 服务器信息泄露.集群被破坏 一. 四字命令未授权使用 1.1 测试 工具:netcat ,Linux或Windows都可以测 命令行输入echo envi | nc ...
- python 数据分析与挖掘实战01
python 数据分析与挖掘实战 day 01 08/02 这种从数据中"淘金",从大量数据包括文本中挖掘出隐含的.未知的.对决策有潜在价值关系.模式或者趋势,并用这些知识和规则建 ...
- IO 的五种模型是什么
目录 前言 用户空间和内核空间 IO 五种模型 阻塞型 IO 非阻塞 IO IO 多路复用 信号驱动 IO 异步 IO 总结 阻塞和非阻塞 同步与异步 前言 我们经常看到阻塞/非阻塞,同步/异步这两组 ...
- 第七周jieba分词
import jieba txt = open("聊斋志异简写版.txt", "r", encoding='utf-8').read() words = jie ...
- 解决python3 ,ModuleNotFoundError: No module named 'pip'问题
今天想要装一下PyYmal第三方库来写一下Python的desired_caps.yaml文件,候发现cmd窗口下无法执行pip命令, 出现了:ModuleNotFoundError: No modu ...
- Shell变量、函数
上篇文章初步认识了一下shell脚本及其简单的案例,下面我们再来讲一下shell的进击部分. 一.变量 1.常用系统变量:($HOME.$SHELL.$PWD.$USER) 2.自定义变量: 2.1. ...
- $$ PHP 的含义
php中两个$也就bai是$$用来定义可变变量. 所谓可变变量,就是一个变量的名,又是一个变量.