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() -数据劫持 和 ...
随机推荐
- Leetcode学习笔记(5)
之前断了一段时间没做Leetcode,深感愧疚,重新续上 题目1 ID104 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点 ...
- centos 6.4-linux环境配置,安装hadoop-1.1.2(hadoop伪分布环境配置)
1 Hadoop环境搭建 hadoop 的6个核心配置文件的作用: core-site.xml:核心配置文件,主要定义了我们文件访问的格式hdfs://. hadoop-env.sh:主要配置我们的j ...
- pytorch实战(一)hw1——李宏毅老师作业1
任务描述:利用前9小时数据,预测第10小时的pm2.5的数值,回归任务 kaggle地址:https://www.kaggle.com/c/ml2020spring-hw1 训练集为: 12个月*20 ...
- uni-app中封装统一请求函数
封装统一请求函数有利于项目的维护 整体功能简单实用,但小编遇到一个巨坑,项目中在vue文件使用跳转方法,url参数输入 "/" 后工具提示的路径为 "/pages/log ...
- Java经典小游戏——贪吃蛇简单实现(附源码)
一.使用知识 Jframe GUI 双向链表 线程 二.使用工具 IntelliJ IDEA jdk 1.8 三.开发过程 3.1素材准备 首先在开发之前应该准备一些素材,已备用,我主要找了一个图片以 ...
- sql server如何把退款总金额拆分到尽量少的多个订单中
一.问题 原来有三个充值订单,现在要退款450元,如何分配才能让本次退款涉及的充值订单数量最少?具体数据参考下图: 二.解决方案 Step 1:对可退金额进行降序排列,以便优先使用可退金额比较大的订单 ...
- git基础使用(超级详细)
使用git前的步骤: 1. 安装git (安装步骤省略) 2. 使用git设置用户名和邮箱 git config --global user.name "Your Name" gi ...
- Validated 注解完成 Spring Boot 参数校验
1. @Valid 和 @Validated @Valid 注解,是 Bean Validation 所定义,可以添加在普通方法.构造方法.方法参数.方法返回.成员变量上,表示它们需要进行约束校验. ...
- LLVM程序分析日记之CMake使用
我们编写LLVM Pass或者将LLVM嵌入自己的项目时,需要用到CMake来组织自己的项目目录. Documents [1] http://llvm.org/docs/CMake.html#embe ...
- UML—20—001
这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE1 这个作业要求在哪里 https://edu.cnblogs.com/campus/fz ...