news 2026/9/2 22:17:08

Vue MutationObserver 监听

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vue MutationObserver 监听

MutationObserver 之前写过一篇详解,具体可参考:https://blog.csdn.net/qq_36020334/article/details/156300319?spm=1001.2014.3001.5502

在前端基于Vue的开发中,Vue2用watch来监听数据的变化,通过deep属性的配置项来监听对象内部的变化。 在 Vue3 中使用 proxy 替代了defineProperty 来监听整个对象,便利程度大大提高。
但有时候会遇到这样一些特殊情况,例如:想要给一个按钮动态的绑定一个样式,这个样式的绑定依赖于定义的一个变量,但是该变量也是动态的,变量的值依赖于另外一个内部组件样式的变化。 这就用到了 MutationObserver 去监听一个特定样式的变化,进而去实现业务的需求

代码实现:

<template> <div :class="{'mycolor':isActive}" class="content"> <el-button type="primary" class="el-button" @click.stop="openDialog" >打开弹窗</el-button > <el-dialog ref="dialog" title="我是弹窗啊" width="300px" :visible="false" :before-close="dialogBeforeClose" > <div></div> <div slot="footer"> <el-button @click="dialogBeforeClose">取 消</el-button> <el-button type="primary" @click="dialogBeforeClose">确 定</el-button> </div> </el-dialog> </div> </template> <script> export default { name: "testContent", data() { return { isActive: false, }; }, mounted() { this.$nextTick(() => { this.watchDialogStyle(this.$refs.dialog.$el); }); }, methods: { openDialog() { this.$refs.dialog.$el.style.display = "block"; }, dialogBeforeClose() { this.$refs.dialog.$el.style.display = "none"; }, watchDialogStyle(dialog) { const observer = new MutationObserver( (mutations) => { mutations.forEach((mutation) => { if(dialog.style.display === 'none'){ this.isActive = true; } else{ this.isActive = false; } }); }); observer.observe(dialog, { attributeFilter: ["style"] }); }, }, }; </script>
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 11:05:49

计算机Java毕设实战-基于springboot的校园二手交易平台基于springboot+mysql+veu校园二手书交易管理系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/9/2 20:15:16

Docker容器化部署:轻松运行TensorRT镜像环境

Docker容器化部署&#xff1a;轻松运行TensorRT镜像环境 在智能摄像头、语音助手和推荐系统这些实时性要求极高的AI应用背后&#xff0c;一个共同的挑战浮出水面——如何让训练好的深度学习模型在生产环境中跑得又快又稳&#xff1f;尤其是在边缘设备或云端服务器上处理高并发…

作者头像 李华
网站建设 2026/9/2 20:15:37

Java毕设选题推荐:基于springboot+vue二手交易平台基于springboot的校园二手交易平台【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/9/2 20:13:50

自动化绘图是什么意思!——东莞振华职校

自动化绘图是指借助计算机软件、算法或专用设备&#xff0c;自动完成图形绘制、编辑与输出的技术过程&#xff0c;核心是用程序化、参数化的方式替代传统手工绘图&#xff0c;实现 “输入规则 / 数据→自动生成图形” 的高效工作模式。 它广泛应用于机械制造、建筑设计、电子电…

作者头像 李华
网站建设 2026/9/2 20:14:05

Claude Code概述

Claude&#xff08;克劳德&#xff09;Code是由Anthropic开发的官方CLI工具&#xff0c;用于协助用户处理软件工程任务。 Anthropic发现了Cursor的成功后&#xff0c;开发了Claude Code作为Cursor的竞品。Claude Code是一个革命性的AI编程工具&#xff0c; 它将强大的Claude AI…

作者头像 李华
网站建设 2026/9/2 20:14:02

观察者模式与事件中心

观察者模式与事件中心观察者模式和事件中心的关系事件中心是观察者模式的中心化类型&#xff0c;观察者模式比事件中心更广义&#xff0c;不使用事件中心&#xff0c;两个类&#xff0c;类B监听类A的事件&#xff0c;也是观察者模式。为什么要用事件中心&#xff1f;我觉得在Un…

作者头像 李华