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

网站开发者招聘营销推广外包

网站开发者招聘,营销推广外包,装饰公司起名字大全,做品牌特价的网站有哪些问题描述: 我的子页面打印的时候通过isPdf来隐藏“选择参加人员”按钮。 我子页面有个el-dialog,el-dialog里面有个大的div它的id为app-pre-meet-add,在子页面我通过isPdf来显示我想要的内容。现在我在父页面先通过this.$refs.child.control…

问题描述:

我的子页面打印的时候通过isPdf来隐藏“选择参加人员”按钮。

我子页面有个el-dialog,el-dialog里面有个大的div它的id为app-pre-meet-add,在子页面我通过isPdf来显示我想要的内容。现在我在父页面先通过this.$refs.child.controlPdf(true)来调用子页面的controlPdf方法使得子页面的isPdf变成true,然后通过下面的代码来克隆子页面的id为app-pre-meet-add的div:

  this.$refs.child.controlPdf(true);const container = document.getElementById("app-pre-meet-add");// 克隆父元素(深刻隆)const clonedParent = container.cloneNode(true);clonedParent.setAttribute("class", "cloned-app-pre-meet-add-class");container.parentNode.insertBefore(clonedParent, container.nextSibling);// 查找所有带有 hidden 类的子元素 form,并在克隆的元素中移除 hidden 类const clonedHiddenForms = clonedParent.querySelectorAll(".hidden");clonedHiddenForms.forEach((form) => {form.classList.remove("hidden");});

理论上这个新克隆的div应该是有子页面div在isPdf为true情况下的状态,但是为什么isPdf没有用

原因:

这个问题的根源在于cloneNode方法的行为。当你克隆一个DOM元素时,你得到的是该元素在那一刻的快照,包括它的所有子元素和属性。但是,这个方法不会克隆与该元素相关联的JavaScript状态或事件监听器。在你的情况下,isPdf可能是一个响应式数据属性或者计算属性,它控制着el-dialog中某些元素的显示或隐藏。当你克隆div时,你只是复制了它的静态结构,而没有复制Vue实例中的响应式状态。


解决方法:

使用Vue的ref$nextTick
你可以在子组件的div上使用ref,并在父组件中通过$refs访问它。然后,你可以在父组件中调用一个方法来改变isPdf的状态,并使用$nextTick来确保DOM已经被更新。在$nextTick的回调函数中,你可以克隆div

就是使用nextTick!!!

appPreAdd(formText, vdata, flag, res) {this.$refs.child.controlPdf(true);this.$nextTick(async () => {const container = document.getElementById("app-pre-meet-add");// 克隆父元素(深刻隆)const clonedParent = container.cloneNode(true);clonedParent.setAttribute("class", "cloned-app-pre-meet-add-class");container.parentNode.insertBefore(clonedParent, container.nextSibling);// 查找所有带有 hidden 类的子元素 form,并在克隆的元素中移除 hidden 类const clonedHiddenForms = clonedParent.querySelectorAll(".hidden");clonedHiddenForms.forEach((form) => {form.classList.remove("hidden");});await htmlToPdftoFile.getPdfFromHtml(".cloned-app-pre-meet-add-class",formText,"add",res.data.data,new Date(vdata.createTime),this.checkFormTypeList[flag]);container.parentNode.removeChild(clonedParent);this.$refs.child.controlPdf(false);});},

最新问题:

这个问题就是await后面要跟promise,我没注意。

可以看到await修饰 this.appPreAdd方法

解决:

appPreAdd(formText, vdata, flag, res) {return new Promise((resolve, reject) => {this.$refs.child.controlPdf(true);this.$nextTick(async () => {try {const container = document.getElementById("app-pre-meet-add");const clonedParent = container.cloneNode(true);clonedParent.setAttribute("class", "cloned-app-pre-meet-add-class");container.parentNode.insertBefore(clonedParent,container.nextSibling);const clonedHiddenForms = clonedParent.querySelectorAll(".hidden");clonedHiddenForms.forEach((form) => {form.classList.remove("hidden");});// 等待 PDF 生成完成await htmlToPdftoFile.getPdfFromHtml(".cloned-app-pre-meet-add-class",formText,"add",res.data.data,new Date(vdata.createTime),this.checkFormTypeList[flag]);container.parentNode.removeChild(clonedParent);this.$refs.child.controlPdf(false);// 成功完成,解析 Promiseresolve();} catch (error) {// 发生错误,拒绝 Promisereject(error);}});});},

http://www.hrbkazy.com/news/49839.html

相关文章:

  • 电子商务网站建设与开发模板下载网站
  • 大学加强网站建设与管理的通知新东方雅思培训价目表
  • 怎么建设b2b网站关键词seo优化软件
  • 网站建设a云世家网络重庆营销型网站建设公司
  • 网站做广告如何做帐兰州网络推广优化怎样
  • 金色 网站 模板成品网站货源1
  • 日本可以自己做网站吗?哪些平台可以发布推广信息
  • 成都房地产上市公司有哪些免费优化网站排名
  • 知果果网站谁做的中山网站seo
  • 科室网站建设各大搜索引擎提交入口
  • 如何把自己做的网站放到微信上搜索引擎谷歌入口
  • 网络规划设计师对应中级重庆网页优化seo公司
  • wordpress 图片中文名宁波seo快速优化课程
  • 临朐门户网站网页设计素材
  • 什么网站好看用h5做百度游戏中心官网
  • 淘宝的好券网站怎么做优化大师官方免费下载
  • 网站做点击收费标准长春百度seo公司
  • 百度官方营销推广平台有哪些seo快速排名软件网址
  • 个人电脑做服务器网站色盲测试图免费测试
  • 辽宁购物网站制作百度下载安装免费
  • wordpress如何显示首页seo百度刷排名
  • 呼和浩特网站建设怎么投放网络广告
  • 钉钉小程序开发平台seo优化要做什么
  • 外包建设网站潍坊网站建设公司
  • 海外推广广告知了seo
  • 外贸日文网站网站seo视频
  • 手机微信网站怎么做的好处培训心得体会范文大全1000
  • 成都广告设计公司电话seo网站推广软件排名
  • 网站群建设讲话手机百度下载
  • 找别人做网站注意事项搜索引擎营销的主要方法包括