Vue-watch 监视

本文详细介绍了Vue.js中watch属性的使用方法,包括如何监听数据变化并执行相应操作,以及如何监听路由路径的变化。提供了具体的代码示例,帮助读者理解watch在实际开发中的应用。

Vue-watch


一、说明

watch: {}用来监听数据的改变,每当被监听的数据改变时,就会执行对应的方法。一般用来监听路由路径的改变。


二、注意

watch中监视的变量发生改变时,执行的方法没有返回值

三、watch监听变量

代码示例
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script src="../lib/vue.js"></script>
</head>
<body>
    <div id="app">
<!--        1.字符串拼接案例, 输出结果为【用户名---密码】-->
        name:<input type="text" v-model="name">
        pwd:<input type="text" v-model="pwd">
        result:<input type="text" v-model="result">
    </div>
<script>
    var vm = new Vue({
        el: '#app',
        data: {
            name: '',
            pwd: '',
            result: ''
        },
        methods: {},
        watch: {    // 2.监视数据变量的改变,变量值改变时,会调用对应的方法,该方法可以有两个形参,用来接收新值和旧值
            name: function (newVal, oldVal) {
                this.result = newVal + "---" + this.pwd
            },
            pwd(newVal, oldVal) {
                this.result = this.name + "---" + newVal
            }
        }
    })
</script>
</body>
</html>

三、watch监听路由路径

通过 $route.path 获取当前的路由地址,然后通过watch来监听

代码示例
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script src="../lib/vue.js"></script>
    <script src="../lib/vue-router.js"></script>
</head>
<body>
    <div id="app">
        <h1>当前地址{{curPath}}</h1>
<!--        6.router-link-->
        <router-link to="/login">登录</router-link>
        <router-link to="/register">注册</router-link>
<!--        5.router-view-->
        <router-view></router-view>
    </div>

<!--    1.定义组件模板-->
    <template id="login">
        <h1>登录组件</h1>
    </template>
    <template id="register">
        <h1>注册组件</h1>
    </template>
<script>
    // 2.创建组件模板对象
    var login = { template: '#login' }
    var register = { template: '#register' }

    // 3.创建路由对象
    var router = new VueRouter({
        routes: [
            {path: '/', redirect: '/login'},
            {path: '/login', component: login},
            {path: '/register', component: register},
        ]
    })
    var vm = new Vue({
        el: '#app',
        data: {
            curPath: '/'
        },
        methods: {},
        router,  // 4.注册路由
        watch: { // 5.监听路由路径,$route.path
            '$route.path': function (newVal, oldVal) {
                this.curPath = newVal
            }
        }
    })
</script>
</body>
</html>

更新时间:2019-12-22
Vue 3 中使用 `vue-quill` 或 `@vueup/vue-quill` 实现富文本编辑器时,若需监听内容变化并作出响应,可通过 `watch` 监听绑定到编辑器的响应式数据。假设使用 `ref` 来绑定编辑器内容,可以通过 Vue 3 的 `watch` 函数来实现内容变化的监听。 以下是一个使用 `@vueup/vue-quill` 的示例,结合 `watch` 监听内容变化并执行处理逻辑: ### 使用 `watch` 监听 `vue-quill` 内容变化 ```vue <template> <div> <quill-editor v-model="editorContent" /> <p>当前内容长度: {{ contentLength }}</p> </div> </template> <script setup> import { ref, watch } from 'vue' import { QuillEditor } from '@vueup/vue-quill' import '@vueup/vue-quill/dist/vue-quill.snow.css' const editorContent = ref('') const contentLength = ref(0) // 初始更新内容长度 contentLength.value = editorContent.value.length // 使用 watch 监听编辑器内容变化 watch( () => editorContent.value, (newContent) => { // 更新内容长度 contentLength.value = newContent.length // 可以在这里执行其他处理逻辑,例如内容验证、自动保存等 console.log('内容已更新:', newContent) } ) </script> ``` 上述代码中,`v-model` 将 `editorContent` 绑定到编辑器的内容上,当用户在编辑器中输入时,`editorContent.value` 会随之变化。通过 `watch` 监听 `editorContent.value` 的变化,可以在内容更新时执行自定义逻辑,例如更新内容长度统计、内容校验、或调用 API 自动保存数据。 ### 进阶处理:限制输入字数 如果希望限制用户输入的字数,可以在 `watch` 中添加逻辑,当内容超过限制时进行截断并提示用户: ```javascript watch( () => editorContent.value, (newContent) => { const maxLength = 1000 if (newContent.length > maxLength) { editorContent.value = newContent.slice(0, maxLength) alert(`内容不能超过 ${maxLength} 字符`) } contentLength.value = editorContent.value.length } ) ``` ### 注意事项 - `vue-quill` 的 `v-model` 默认绑定的是 HTML 字符串,因此在处理内容时需要注意 HTML 标签的影响。 - 如果使用 `toRefs` 或 `reactive` 管理状态,确保正确解包值后再进行监听。 - 若编辑器内容频繁更新,可以考虑使用 `watchEffect` 或防抖机制避免性能问题。 通过上述方式,可以在 Vue 3 中有效使用 `watch` 来监听 `vue-quill` 编辑器内容的变化,并根据实际需求执行响应操作。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值