Vue.js watch监视属性

这个属性用来监视某个数据的变化,并触发相应的回调函数执行

1.基本用法

(1)添加watch属性,值为一个对象。对象的属性名就是要监视的数据,属性值为回调函数,每当这个属性名对应的值发生变化,就会触发该回调函数执行
(2)回调函数有2个参数:
newVal:数据发生改变后的值
oldVal:数据发生改变前的值

var vm = new Vue({
    el:'#app',
    data: {
        name: '郭靖'
    },
    watch: {
        name(newVal,oldVal){
            console.log('name的值发生了变化')
            console.log(newVal,oldVal)
        }
    }
})

vm.name = "郭大侠" // 执行这行代码,会触发对应的回调函数

执行结果:

name的值发生了变化
郭大侠 郭靖

2.监听对象内部属性的变化

前面的例子只是监听data中的第一层数据,如果要监听多层次的数据,例如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.深度监听

监视属性只能监听到当前对象值的变化,而对象内部的属性变化不会监听到,前面我们监听了wife和wife.name,修改了wife.name并不会触发监听wife的回调函数。
想要监听对象内部的属性值变化,需要进行相应的配置。

  • 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属性对应的回调

原文地址:https://www.cnblogs.com/OrochiZ-/p/11832243.html

时间: 2024-08-25 08:38:52

Vue.js watch监视属性的相关文章

9.Vue.js 监听属性

本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化. 以下实例通过使用 watch 实现计数器: <div id = "app"> <p style = "font-size:25px;">计数器: {{ counter }}</p> <button @click = "counter++" style = "font-size:25px;&

vue.js事件,属性,以及交互

这是我学习vue的第二天,今天主要学习了如何利用vue阻止事件冒泡,阻止事件的默认行为,键盘事件以及如何添加class.style这些属性,以及如何利用vue来进行数据交互,利用百度的一个API来写一个百度下拉列表,今天学习完之后,感触最深的就是vue主要是逻辑上的应用,减少了DOM的操作,并且vue还用到了原生的方法,所以学好js高程很有必要. 一.如何利用vue阻止事件冒泡以及阻止事件的默认行为和了解什么是事件对象 在介绍事件冒泡之前,我们来了解一下事件,在上篇博客中我们知道事件的一般形式为

Vue.js的el属性

在创建Vue实例时,需要传入一个选项对象,选项对象的el属性指向View, el: '#app'表示该Vue实例将挂载到<div id="app">...</div>这个元素上, 但是el只匹配第一个, 不要认为它是jq选择器. 如果el: '.app',只会匹配第一个.app.

vue.js事件与属性

事件: 事件冒泡行为: 1.@click="show($event)" show:function (ev) { ev.cancelBubble=true; } 2.@click.stop="show()" 事件捕获行为: <div v-on:click.capture="doThis">...</div> 连用:<a v-on:click.stop.prevent="doThat"><

vue.js的计算属性computed

对于计算属性里关联的对象,即使对象不是组件作用域内的,当对象在外部改变了某个属性,同样会发出计算属性的方法. computed:{ noCheckeLength:function(){ return this.list.filter(function(item){ return !item.isChecked }).length } }, item.isChecked是input{type="checkbox"}的value值,当在页面点击勾选或者去掉勾选,则item.isChecke

Vue.js学习 Item12 – 内部响应式原理探究

深入响应式原理 大部分的基础内容我们已经讲到了,现在讲点底层内容.Vue.js 最显著的一个功能是响应系统 —— 模型只是普通对象,修改它则更新视图.这让状态管理非常简单且直观,不过理解它的原理也很重要,可以避免一些常见问题.下面我们开始深挖 Vue.js 响应系统的底层细节. 如何追踪变化 把一个普通对象传给 Vue 实例作为它的 data 选项,Vue.js 将遍历它的属性,用 Object.defineProperty 将它们转为 getter/setter.这是 ES5 特性,不能打补丁

一款简单而不失强大的前端框架——【Vue.js的详细入门教程①】

↓— Vue.js框架魅力 —↓ 前言   Vue.js 是一个构建数据驱动的 web 界面的渐进式框架.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件.Vue 只关注视图层并且采用自底向上增量开发的设计. Vue.js作为一个后起的前端框架,借鉴了Angular .React等现代前端框架/库的诸多特点,取得了相当不错的成绩.Vue.js 自身不是一个全能框架——它只聚焦于视图层.因此它非常容易学习,非常容易与其它库或已有项目整合.另一方面,在与相关工具和支

Vue.js高仿饿了么外卖App 前端框架Vue.js 1.0升级2.0

课程目录:第1章 课程简介介绍课程的学习目标和学习内容.第2章 Vuejs介绍从前端开发趋势分析开始,引入 MVVM 开发框架和 Vue.js,接着对比流行框架Angular 和 React,最后详细介绍 Vue.js 的核心思想-数据驱动和组件化.第3章 Vue-cli 开启 Vuejs 项目介绍 Vue 项目的脚手架,如何安装,对脚手架生成的目录文件做介绍,介绍 Vue 组件的编写方法,最后运行 demo 项目并介绍 webpack 构建脚本来说明 demo 的运行原理.第4章 项目实战-准

Vue.js 高仿饿了么外卖APP

第1章 课程简介介绍课程的学习目标和学习内容.1-1 课程简介1-2 课程安排 第2章 Vuejs介绍从前端开发趋势分析开始,引入 MVVM 开发框架和 Vue.js,接着对比流行框架Angular 和 React,最后详细介绍 Vue.js 的核心思想-数据驱动和组件化.2-1 Vuejs介绍-近年来前端开发趋势2-2 Vuejs介绍-MVVM框架2-3 Vuejs介绍-什么是Vuejs及Vuejs生态2-4 Vuejs介绍-对比Angular.React2-5 Vuejs介绍-Vuejs核心