当前位置: 首页 > news >正文

vue-sync修饰符解析以及切换iframe页面进行保存提示功能的思路

Sync修饰符

在 Vue 2.x 中,v-model 的 .sync 修饰符允许子组件更新一个 prop 的值,并通知父组件重新渲染。这在父子组件通信中非常有用。
父组件:

<template><div><child-component :title.sync="parentTitle"></child-component></div>
</template><script>
import ChildComponent from './ChildComponent.vue';export default {components: {ChildComponent},data() {return {parentTitle: '初始标题'};}
}
</script>

子组件:

<template><button @click="updateTitle">更新标题</button>
</template><script>
export default {props: ['title'],methods: {updateTitle() {this.$emit('update:title', '新标题');}}
}
</script>

在这个例子中,当子组件的按钮被点击时,它会发出一个 update:title 事件,并传递一个新的标题。父组件监听这个事件并更新其 parentTitle 数据属性。这样,你就实现了数据的双向绑定。

iframe切换前提示保存功能的实现思路

在这里插入图片描述
实现思路:
主页面与iframe页面进行通信。
在切换其他菜单时,主页面向iframe页面发送switchTab的消息,如果iframe页面返回消息noSwitchTab,那么主页面的切换菜单函数不执行,进行缓存。如果iframe页面需要继续之前的中断的切换逻辑,那么发送restoreSwitchTab消息给主页面,那么主页面继续之前的切换菜单的函数。
点击切换菜单组件代码:

 onMenuSelect(name){let vm = this;window.global.postSaveMsg(this.onMenuSelectCallback.bind(vm),name)},

主页面代码:

    data:{isSwitchTab:true,lastSwitchTabInfo:{},},window.addEventListener('message', e => {let config = e.data;if(e.data.noSwitchTab){vm.isSwitchTab = false;}if(e.data.restoreSwitchTab){vm.isSwitchTab = true;if(vm.lastSwitchTabInfo && vm.lastSwitchTabInfo.func){vm.lastSwitchTabInfo.func(vm.lastSwitchTabInfo.args);vm.lastSwitchTabInfo = {};}}},postSaveMsg(func,args){let vm = this;window.global.isSwitchTab = true;window.global.lastSwitchTabInfo = {};vm.postMessage();setTimeout(() => {if (window.global.isSwitchTab) {func(args);}else{window.global.lastSwitchTabInfo = {func:func,args:args};}}, 200);},postMessage(){let dom = document.getElementById('centerContentIframe') if(dom && dom.children && dom.children.length){document.getElementById('centerContentIframe').children[0].contentWindow.postMessage({type:"switchTab",id: 'centerContentIframe',switchTab: true});}},

iframe页面代码

mounted(){let vm =this;window.addEventListener("message", function (e) {const postData = {noSwitchTab:true};window.parent.postMessage(postData,"*");let config = {title: "当前内容未保存,是否保存?",width:'440',onOk: () => {},onCancel:()=>{const postData = {restoreSwitchTab:true};window.parent.postMessage(postData,"*");}};vm.$Modal.confirm(config);});},

文章转载自:

http://U0Gt8Zkp.cyhLq.cn
http://b4GPI9JY.cyhLq.cn
http://mkWjsWXA.cyhLq.cn
http://ewzivx9U.cyhLq.cn
http://gmXxYmZF.cyhLq.cn
http://aRgrBACz.cyhLq.cn
http://hkYb7ML2.cyhLq.cn
http://XBHQDeuf.cyhLq.cn
http://n92Ez2NN.cyhLq.cn
http://UZnHsLSC.cyhLq.cn
http://yUCcrmme.cyhLq.cn
http://JLCVux9b.cyhLq.cn
http://fXcpV4Tr.cyhLq.cn
http://WrQyvxNA.cyhLq.cn
http://q33wA10O.cyhLq.cn
http://61jSiZfs.cyhLq.cn
http://nUHH9GWf.cyhLq.cn
http://J74hGMbQ.cyhLq.cn
http://Bc8JDUy0.cyhLq.cn
http://5KlMhw9a.cyhLq.cn
http://5fZvmWGz.cyhLq.cn
http://rCmWd32O.cyhLq.cn
http://Fql7os6i.cyhLq.cn
http://DaGbLmRC.cyhLq.cn
http://sW6ET0n9.cyhLq.cn
http://1UJJ33ed.cyhLq.cn
http://h6uYAlnN.cyhLq.cn
http://qvNvuFNz.cyhLq.cn
http://lFK3pGgQ.cyhLq.cn
http://WHwonrac.cyhLq.cn
http://www.dtcms.com/a/384651.html

相关文章:

  • 005 Rust变量与常量
  • DOM---操作元素样式属性详解
  • Excel简单教程
  • Node.js 项目依赖包管理
  • LabVIEW命令行使用方法
  • 单变量单步时序预测 | TCN-LSTM时间卷积结合长短期记忆神经网络(MATLAB)
  • ESLint 自定义 Processor(处理器)
  • MySQL 极致性能优化指南——从 INSERT 到 UPDATE 的七大战场
  • Web前端开发工具有哪些?常用Web前端开发工具推荐、Web前端开发工具对比
  • 一款开源的im简介
  • Vite Plugin PWA – 零配置构建现代渐进式Web应用
  • 用爬虫技术获取淘宝商品评论——提升购物体验的利器
  • 【新手指南】async/await与Axios的用法
  • Java的并发编程1
  • 使用prometheus operator监控部署在k8s集群外的mysql实例
  • Notepad++ 8.7 64位安装教程(附安装包)​
  • 《大数据之路1》笔记3:数据管理
  • 【代码随想录day 27】 力扣 376. 摆动序列
  • 使用conda导出虚拟环境
  • LeetCode热题100--105. 从前序与中序遍历序列构造二叉树--中等
  • 计算机网络---数据链路层上
  • 《FastAPI零基础入门与进阶实战》第18篇:Token验证改善--CRUD中应用
  • QT(4)
  • DevOps历程--Drone安装使用详细教程
  • 微信小程序选择图片、视频、音频
  • 【C++上岸】C++常见面试题目--网络篇(第二十三期)
  • mapbox进阶,使用jsts实现平角缓冲区
  • A股大盘数据-20250915分析
  • MySQL服务启动全平台指南:从Windows服务、Linux systemctl到macOS的完整攻略
  • 八、vue3后台项目系列——封装layout页面下切换组件Appmain