VUE学习笔记--侦听器

简介: VUE学习笔记--侦听器

watch侦听器

watch侦听器允许开发者监视数据的变化,从而针对数据的变化做特定的操作

语法格式:

const v = new Vue({
            el: "#app",
            data: {
                username: ''
            },
            watch: {
                //监听username的变化
                // newVal变化之后的值,oldVal变化之前的值
                username( newVal, oldVal ) {
                    console.log(newVal, oldVal);
                }
            }
        })

示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <input type="text" v-model="username">
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
    <script>
        const v = new Vue({
            el: "#app",
            data: {
                username: ''
            },
            watch: {
                //监听username的变化
                // newVal变化之后的值,oldVal变化之前的值
                username( newVal, oldVal ) {
                    console.log(newVal, oldVal);
                }
            }
        })
    </script>
</body>
</html>

侦听器注意点

1.所有的侦听器要定义在watch节点下

2.侦听器本质为函数,要监视哪个数据的变化就把数据名作为方法名即可

3.侦听器的参数,新值在前,旧值在后

对象格式的侦听器

对象格式的侦听器可以通过immediate让侦听器自动触发

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <input type="text" v-model="username">
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
    <script>
        const v = new Vue({
            el: "#app",
            data: {
                username: '1'
            },
            watch: {
                // 对象格式的侦听器
                username: {
                    // 侦听器的处理函数
                    handler(newVal, oldVal) {
                        console.log(newVal, oldVal);
                    },
                    // 默认值为false,要一开始就触发,值填true
                    immediate: true
                }
            }
        })
    </script>
</body>
</html>

深度侦听

侦听的是一个对象,对象中的属性发生变化不会触发侦听器

解决:

1.开启深度监听,只要对象中的属性发生变化就会触发侦听器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <input type="text" v-model="info.username">
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
    <script>
        const v = new Vue({
            el: "#app",
            data: {
                // 用户信息对象
                info: {
                    username: '1'
                }
            },
            watch: {
                // 对象格式的侦听器
                info: {
                    // 侦听器的处理函数
                    handler(newVal) {
                        console.log(newVal);
                    },
                    // 开启深度侦听
                    deep: true
                }
            }
        })
    </script>
</body>
</html>

2.侦听对象的属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <input type="text" v-model="info.username">
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
    <script>
        const v = new Vue({
            el: "#app",
            data: {
                // 用户信息对象
                info: {
                    username: '1'
                }
            },
            watch: {
                //侦听对象的属性
                //侦听对象的属性,必须包裹单引号
                'info.username'(newVal, oldVal) {
                    console.log(newVal, oldVal);
                }                
            }
        })
    </script>
</body>
</html>



相关文章
|
1天前
|
JavaScript 开发工具 git
大事件项目40---Vue代码里如何引入相对路径图片
大事件项目40---Vue代码里如何引入相对路径图片
|
2天前
|
JavaScript
vue滚动到页面底部时加载
vue滚动到页面底部时加载
5 1
|
2天前
|
JavaScript 前端开发
一个好看的vue admin模板
这是一个关于Vue管理模板的引用,提到了[PanJiaChen](https://github.com/PanJiaChen/vue-admin-template)在GitHub上的`vue-admin-template`项目。该项目是一个前端管理模板,链接指向了详细的资源。页面中还包含了一张图片,但markdown格式中无法直接显示。简而言之,这是关于一个基于Vue的后台管理界面模板的参考信息。
|
2天前
|
资源调度 JavaScript API
Vue-treeselect:为Vue应用程序提供强大选择器的指南
Vue-treeselect:为Vue应用程序提供强大选择器的指南
6 0
|
2天前
|
JavaScript
vue知识点
vue知识点
5 0
|
缓存 JavaScript
初识 Vue(09)---(计算属性、方法、侦听器)
计算属性 计算属性的值是一个函数,并且是内置缓存的; 示例: 计算属性、方法、侦听器 {{fullName}} {{age}} var vm = new Vue({ ...
1120 0
|
3天前
|
JavaScript 前端开发
Vue,如何引入样式文件
Vue,如何引入样式文件
|
3天前
|
JavaScript
|
3天前
|
JavaScript 前端开发 API
|
3天前
|
JavaScript 前端开发 网络架构
Vue如何实现页面跳转路由,实现单页面跳转
Vue如何实现页面跳转路由,实现单页面跳转