Vue.js 监视属性
1.基本用法
- 用途:对某个数据进行监听并执行对应的回调,可以是data中的数据,还可以是计算属性
- 语法:在watch对象下添加字段,字段名为要监听的数据,字段值一般是fucntion,也可以是对象
- 回调函数有2个参数:数据发生改变后的值,数据发生改变前的值
<script>
var vm = new Vue({
el:"#app",
data(){
return {
title:"hello world",
}
},
watch:{
//监听data中的值
title(newVal,oldVal){
console.log('now = ',newVal,oldVal)
},
//监听计算属性
reversedTitle(newVal,oldVal){
console.log('nowSecond = ',newVal,oldVal)
}
},
computed:{
reversedTitle: function () {
// `this` 指向 vm 实例
return this.title.split('').reverse().join('')
}
}
})
//修改data中的数据
setTimeout(()=>{
vm.title = "vue.js"
},1000)
</script>
执行结果:
title = vue.js hello world
index.html:43 reversedTitle = sj.euv dlrow olleh
2.监听对象内部属性的变化
- 如果要监听多层次的数据,例如a.b.c,则属性名需要用引号包裹起来
- 如果父级对象的值发送变化,则会使这个监视属性的回调函数执行
<body>
<div id="app">
<p>{{name}}</p>
<button @click="test">修改wife.name</button>
<button @click="test2">修改wife</button>
</div>
</body>
<script>
var vm = new Vue({
el:'#app',
data: {
name: '郭靖',
age: 20,
wife: {
name: '黄蓉',
sex: '女'
}
},
watch: {
//监听wife中的name属性
'wife.name'(newVal,oldVal){
console.log('wife.name发生了改变')
},
//监听wife
'wife'(newVal,oldVal){
console.log('wife发生了改变')
}
},
methods:{
test(){
this.wife.name = "'黄帮主'"
},
test2(){
this.wife = {name:'我不是黄蓉',sex:'women'}
}
}
})
</script>
运行结果表明,无论是他父级对象的值发生了改变,还是它本身的值发生了改变,都会使这个监视属性的回调函数执行。

3.监听路由变化
提示:路由的路径信息保存在$route.path中
watch:{
'$route.path':function(newval){
console.log('change')
}
}
4.数组问题
- 直接通过下标对数组元素进行赋值不会触发页面更新,需要使用push()/shift()/splice()等方法来更新数组(这些方法应该是重新封装过)
- 但是v-model指令绑定的数组元素没有这个问题,能更新页面,也能触发相关watch
5.深度监听
- 将监听属性的值设定为对象,则可以配置更多的特性
- deep:深度监听,默认false,不能监听对象内部的变化
- handler:回调函数
- immediate:页面初始化时是否触发回调,默认false
var vm = new Vue({
el:'#app',
data: {
name: '郭靖',
age: 20,
wife: {
name: '黄蓉',
sex: '女'
}
},
watch: {
wife:{
deep:true,
handler:function(newVal,oldVal){
console.log('value is change')
},
immediate:true
}
}
})
vm.wife.name = '黄帮主' // 触发wife属性对应的回调
Vue.js 监视属性的更多相关文章
- Vue.js 计算属性是什么
Vue.js 计算属性是什么 一.总结 一句话总结: 模板 表达式 维护 在模板中表达式非常便利,但是它们实际上只用于简单的操作.模板是为了描述视图的结构.在模板中放入太多的逻辑会让模板过重且难以维护 ...
- Vue.js 计算属性(computed)
Vue.js 计算属性(computed) 如果在模板中使用一些复杂的表达式,会让模板显得过于繁重,且后期难以维护.对此,vue.js 提供了计算属性(computed),你可以把这些复杂的表达式写到 ...
- Vue.js 计算属性
Vue.js 计算属性 使用计算属性的实例: <!DOCTYPE html> <html> <head> <meta cahrset="utf-8& ...
- vue.js计算属性 vs methods
计算属性:Vue.js 模板内的表达式非常便利,但是缺点就是只能用于简单的运算,如果模板中有太多的逻辑运算会让模板不堪重负且难以维护.恰恰计算属性可以处理复杂的逻辑运算,也就是说对于任何复杂逻辑你都应 ...
- Vue.js 计算属性computed和methods的区别
在vue.js中,有methods和computed两种方式来动态当作方法来用的 如下: 两种方式在这种情况下的结果是一样的 写法上的区别是computed计算属性的方式在用属性时不用加(),而met ...
- Vue.js 计算属性的秘密
计算属性是一个很邪门的东西,只要在它的函数里引用了 data 中的某个属性,当这个属性发生变化时,函数仿佛可以嗅探到这个变化,并自动重新执行. 上述代码会源源不断的打印出 b 的值.如果希望 a 依赖 ...
- Vue.js:计算属性
ylbtech-Vue.js:计算属性 1.返回顶部 1. Vue.js 计算属性 计算属性关键词: computed. 计算属性在处理一些复杂逻辑时是很有用的. 可以看下以下反转字符串的例子: 实例 ...
- Vue.js学习笔记(一) - 起步
本篇将简单介绍一下Vue.js,并在Node.js环境下搭建一个简单的Demo. 一.简介 我个人理解,Vue.js是一套前端视图层的框架,它只关心视图展示和数据绑定,它的一些语法与Angular 1 ...
- vue.js 常用语法总结(一)
作者:曾萍,目前就职于京东商城. 概述 2016年已经结束了.你是否会思考一下,自己在过去的一年里是否错过一些重要的东西?不用担心,我们正在回顾那些流行的趋势.通过比较过去12个月里Github所增加 ...
- vue.js应用开发笔记
看vue.js有几天了,之前也零零散散的瞅过,不过一直没有动手去写过demo,这几天后台事比较少,一直在讨论各种需求(其实公司对需求还是比较重视与严谨的,一个项目需求讨论就差不多一周了,这要搁之前,天 ...
随机推荐
- Spring —— 核心概念
IoC (Inversion of Control) 控制反转 使用对象时,由主动new产生对象转换为由外部提供对象,对象的创建控制权由程序转移至外部,这种思想成为控制反转 Spring技术对IoC思 ...
- Go 学习路线图
基础阶段 学习内容: 掌握 Go 的基本语法,包括变量.常量.数据类型(如整数.浮点数.字符串.布尔值.数组.切片.映射等).运算符等. 理解程序的控制流,如条件语句(if-else.switch-c ...
- [OI] 交互 | pipe
关于如何在本地实现交互 管道 Linux 内置了一种管道操作,可以方便地把 \(A\) 程序的输出和 \(B\) 程序的输入连接起来,只需要以下指令: A | B 此代码行的意思是:同时运行 \(A\ ...
- 原生CSS、HTML 和 JavaScript 实现酷炫表单
一直使用 Vue/React ,习惯了用组件,偶尔想用原生三剑客写点 Demo 发现样式丑的不忍直视.最近看 掘金小册<玩转CSS的艺术之美>看到 CSS 相关的内容,发现原生 CSS 也 ...
- qemu的使用
一.QEMU的运行模式 直接摘抄自己<揭秘家用路由器0day漏洞挖掘技术>,网上查了一下也没有找到令人满意的QEMU的使用说明,就采用这本书上的介绍.如果后期能够找到比较满意的QEMU的使 ...
- CRLF the next time Git touches it warning: in the working copy of '', LF will be replaced by CRLF the next time Git touches it warning: in the working copy of
git config --global core.autocrlf true
- Android复习(四)权限—>定义自定义应用权限
定义自定义应用权限 本文档介绍了应用开发者如何使用 Android 提供的安全功能来定义自己的权限.通过定义自定义权限,应用可以与其他应用共享其资源和功能.如需详细了解权限,请参阅权限概览. 背景 A ...
- 现代化 React UI 库:Material-UI 详解!
随着 React 在前端开发中的流行,越来越多的 UI 框架和库开始涌现,以帮助开发者更高效地构建现代化.响应式的用户界面.其中,Material-UI 是基于 Google Material Des ...
- 云原生爱好者周刊:在浏览器中运行 Linux 系统 | 2022-10-10
Confluent 官网已经放出了<Kafka 权威指南第二版:大规模实时数据和流处理>,相比于第一版新增了以下内容: Kafka 管理客户端概述: API 更新到最新的 Apache K ...
- 《大话设计模式》java实现:第二章-策略模式
<大话设计模式>java实现:第二章-策略模式 第二章是使用策略模式实现商场收银系统,使收银系统的促销策略可以灵活更改. 1. 原始代码实现: package gof; /* * < ...