使用watch来侦听data中数据的变化,watch中的属性(watch是对象格式)一定是data 中已经存在的数据。

使用场景:数据变化时执行异步或开销比较大的操作。

典型应用:http://www.pinyinzi.cn/

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的更多相关文章

  1. vue监听器watch & 计算属性computed

    侦听器watch vue中watch是用来监听vue实例中的数据变化 watch监听时有几个属性: handle:其值是一个回调函数,就是监听对象对话的时候需要执行的函数 deep:其值true 或者 ...

  2. Vue 监听器和计算属性到底有什么不同?

    各自的适用场景 计算属性临时快照 官方文档对于计算属性提到了一个重要的点子--"临时快照"(可能就是前面说的计算属性缓存),每当源状态发生变化时,就会创建一个新的快照. 有时候创建 ...

  3. Vue.js-05:第五章 - 计算属性与监听器

    一.前言 在 Vue 中,我们可以很方便的将数据使用插值表达式( Mustache 语法)的方式渲染到页面元素中,但是插值表达式的设计初衷是用于简单运算,即我们不应该对差值做过多的操作.当我们需要对差 ...

  4. vue的计算属性computed和监听器watch

    <template> <div> this is A.vue <br> <!--计算属性--> <label for="msg" ...

  5. Vue学习3:计算属性computed与监听器

    下面是计算属性相关代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  6. Vue(基础三)_监听器与计算属性

    一.前言 本文主要涉及:     1.watch()监听单个属性 2.computed可以监听多个属性 3.点击li标签切换音乐案例 二.主要内容 1.watch()监听器(监听单一数据) (1)监听 ...

  7. VUE 学习笔记 四 计算属性和监听器

    1.计算属性 对于任何复杂逻辑,你都应当使用计算属性 <div id="example"> <p>Original message: "{{ me ...

  8. Vue双向绑定的实现原理系列(三):监听器Observer和订阅者Watcher

    监听器Observer和订阅者Watcher 实现简单版Vue的过程,主要实现{{}}.v-model和事件指令的功能 主要分为三个部分 github源码 1.数据监听器Observer,能够对数据对 ...

  9. vue 双向数据绑定的实现学习(二)- 监听器的实现

    废话:上一篇https://www.cnblogs.com/adouwt/p/9928278.html 提到了vue实现的基本实现原理:Object.defineProperty() -数据劫持 和  ...

随机推荐

  1. 关于Python链式赋值的赋值顺序问题

    在<第4.7节 Python特色的序列解包.链式赋值.链式比较>一文中,老猿这样介绍的: 链式赋值是用一行语句将多个变量赋值为同一个值,语法如下: 变量1=变量2=变量n=赋值表达式 该语 ...

  2. PyQt(Python+Qt)学习随笔:信号签名(signature of the signal)是什么?

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 1.概念解释 函数签名:由函数的参数个数与其类型组成.函数在重载时,利用函数签名的不同即参数个数与类 ...

  3. 5分钟入门MP4文件格式

    写在前面 本文主要内容包括,什么是MP4.MP4文件的基本结构.Box的基本结构.常见且重要的box介绍.普通MP4与fMP4的区别.如何通过代码解析MP4文件 等. 写作背景:最近经常回答团队小伙伴 ...

  4. C#使用ML.Net完成人工智能预测

    前言 Visual Studio2019 Preview中提供了图形界面的ML.Net,所以,只要我们安装Visual Studio2019 Preview就能简单的使用ML.Net了,因为我的电脑已 ...

  5. Proxy:简单小巧又强大好用的代理系统

    之前的文章介绍了许多我们在用的DevOps相关的工具系统,例如:方便创建多套运行环境的Alodi,对运维友好的配置中心Kerrigan,强大的自定义任务引擎Probius以及专注于数据库自动化的ove ...

  6. 最简 Spring IOC 容器源码分析

    前言 BeanDefinition BeanFactory 简介 Web 容器启动过程 bean 的加载 FactoryBean 循环依赖 bean 生命周期 公众号 前言 许多文章都是分析的 xml ...

  7. 七牛云SDKLinux环境下C SDK的编译(转)

    1.下载代码到本地 git clone https://github.com/qiniu/c-sdk.git 如果国外下载速度慢,可以用码云的镜像库 git clone https://gitee.c ...

  8. 调用windows系统下的cmd命令窗口处理文件

    从后缀名为grib2的文件中查询相关的信息,并将查出来的信息保存起来. 主要是学习java中调用windows下的cmd平台,并进行执行相关的命令. package com.wis.wgrib2; i ...

  9. 上传python代码到pypi

    上传python代码到pypi 去pypi官网注册账号 在项目中添加setup.py # coding = utf-8 from setuptools import setup, find_packa ...

  10. JavaScript:使用递归构建树型菜单

    使用递归函数将扁平数据转为树型结构,并渲染到页面 效果图: 代码: <!DOCTYPE html> <html lang="en"> <head> ...