dialog element 删掉标题_ElementUI 销毁Dialog数据(简单粗暴)

在使用element开发通过之中使用Dialog弹窗创建数据或者数据回显在经常不过了。而且数据创建和数据编辑正常都是使用同一组件。

出现的问题:

title="提示弹窗"

:visible.sync="dialogVisible"

width="30%"

destroy-on-close>

使用dialog 提供的 属性 destroy-on-close 也并不能实现实时的dialog销毁,进行创建和编辑数据正常的切换,这时就可以使用强大的v-if进行dialog 直接销毁操作这个办法还是十分有效。代码如下:

title="提示弹窗"

v-if="dialogVisible"

:visible.sync="dialogVisible"

width="30%"

destroy-on-close>

拓展知识(dialog弹窗拖拽):

vue目录:src/utils/directives.js

import Vue from 'vue'

// v-dialogDrag: 弹窗拖拽

Vue.directive('dialogDrag', {

bind(el, binding, vnode, oldVnode) {

const dialogHeaderEl = el.querySelector('.ant-modal-header');

const dragDom = el.querySelector('.ant-modal');

dialogHeaderEl.style.cursor = 'move';

// 获取原有属性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null);

const sty = (() => {

if (window.document.currentStyle) {

return (dom, attr) => dom.currentStyle[attr];

} else {

return (dom, attr) => getComputedStyle(dom, false)[attr];

}

})();

dialogHeaderEl.onmousedown = (e) => {

// 鼠标按下,计算当前元素距离可视区的距离

const disX = e.clientX - dialogHeaderEl.offsetLeft;

const disY = e.clientY - dialogHeaderEl.offsetTop;

const screenWidth = document.body.clientWidth; // body当前宽度

const screenHeight = document.documentElement.clientHeight; // 可见区域高度(应为body高度,可某些环境下无法获取)

const dragDomWidth = dragDom.offsetWidth; // 对话框宽度

const dragDomheight = dragDom.offsetHeight; // 对话框高度

const minDragDomLeft = dragDom.offsetLeft;

const maxDragDomLeft = screenWidth - dragDom.offsetLeft - dragDomWidth;

const minDragDomTop = dragDom.offsetTop;

const maxDragDomTop = screenHeight - dragDom.offsetTop - dragDomheight;

// 获取到的值带px 正则匹配替换

let styL = sty(dragDom, 'left');

let styT = sty(dragDom, 'top');

// 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px

if (styL.includes('%')) {

styL = +document.body.clientWidth * (+styL.replace(/\%/g, '') / 100);

styT = +document.body.clientHeight * (+styT.replace(/\%/g, '') / 100);

} else {

styL = +styL.replace(/\px/g, '');

styT = +styT.replace(/\px/g, '');

};

document.onmousemove = function(e) {

// 通过事件委托,计算移动的距离

let left = e.clientX - disX;

let top = e.clientY - disY;

// 边界处理

if (-(left) > minDragDomLeft) {

left = -(minDragDomLeft);

} else if (left > maxDragDomLeft) {

left = maxDragDomLeft;

}

if (-(top) > minDragDomTop) {

top = -(minDragDomTop);

} else if (top > maxDragDomTop) {

top = maxDragDomTop;

}

// 移动当前元素

dragDom.style.left = `${left + styL}px`;

dragDom.style.top = `${top + styT}px`;

// 将此时的位置传出去

// binding.value({x:e.pageX,y:e.pageY})

}

document.onmouseup = function(e) {

document.onmousemove = null;

document.onmouseup = null;

}

}

}

})

// v-dialogDragWidth: 弹窗宽度拖大 拖小

Vue.directive('dialogDragWidth', {

bind(el, binding, vnode, oldVnode) {

const dragDom = binding.value.$el.querySelector('.el-dialog')

el.onmousedown = (e) => {

// 鼠标按下,计算当前元素距离可视区的距离

const disX = e.clientX - el.offsetLeft

document.onmousemove = function(e) {

e.preventDefault() // 移动时禁用默认事件

// 通过事件委托,计算移动的距离

const l = e.clientX - disX

dragDom.style.width = `${l}px`

}

document.onmouseup = function(e) {

document.onmousemove = null

document.onmouseup = null

}

}

}

})

在main.js中进入即可使用

import '@/utils/directives.js'

使用案列:

title="提示弹窗"

v-dialogDrag // 添加这句话就够了

v-if="dialogVisible"

:visible.sync="dialogVisible"

width="30%">

注意事项: 在使用dialog弹窗拖拽并且也使用了 el-popover 时务必要使用v-if 进行每次销毁,否则会出现第二次弹窗拖拽不生效。

以上就是我对Dialog销毁的理解,如果文章由于我学识浅薄,导致您发现有严重谬误的地方,请一定在评论中指出,我会在第一时间修正我的文章,以避免误人子弟。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/300420.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一个简单的方式搞定密码的加盐哈希与验证

过去一段时间来, 众多的网站遭遇用户密码数据库泄露事件。层出不穷的类似事件对用户会造成巨大的影响,因为人们往往习惯在不同网站使用相同的密码,一家 “暴库”,全部遭殃。单向加密一个简单的方案是将明文密码做单向哈希后存储。单向哈希算法…

“我数学太烂,但高考136分!”刷完上万道题后,我找到2个月多考58分的捷径…...

全世界只有3.14 %的人关注了青少年数学之旅01难上天的高考试卷,我逆袭考到136分!我叫刘辉,来自湖北省的某个县城,今年我数学考到了136分的好成绩,成功被一所985高校录取。↓我的高考成绩↓但回想一年之前,我…

php吞了throw错误,PHP 异常与错误处理

异常处理:意外,是在程序运行过程中发生的意料之外的事,使用异常改变脚本正常流程。try{}catch(异常对象){}如果try中代码没问题,则执行完try中代码后就到catch后执行如果try中代码有异常发生,则抛出一个异常对象&#…

[Forward] 因为火炬,所以迟到,工资照扣

今天跟往常一样,到香蜜湖等230 看到深南大道主道那边站了一名JC叔叔 在前面的主辅岔道口看到有交J叔叔...对面又大堵车...心想大事不妙..又要交通管制了......两hui期间因为交通管制让我第一个月上班就来了一次迟到 这时候是8点钟多一点开始管制.....很后悔没有上到最后一…

三分钟总览微软任务并行库TPL

点击上方蓝字进行关注有小伙伴问我每天忽悠的TPL是什么?☹️ 这次站位高一点,严肃讲一讲。引言俗话说,不想开飞机的程序员不是一名好爸爸;作为微软技术栈的老鸟,一直将代码整洁之道奉为经典, 优秀的程序员将…

第五章 MyEclipse配置hadoop开发环境

1.首先要下载相应的hadoop版本的插件,我这里就给2个例子: hadoop-1.2.1插件:http://download.csdn.net/download/hanyongan300/6238153 hadoop2.2.0插件:http://blog.csdn.net/twlkyao/article/details/17334693 上一章我也讲了怎…

这才是真正的,坐上来,自己动!| 今日趣图

全世界只有3.14 % 的人关注了青少年数学之旅你有见过加辣的奶茶吗?什么叫做科技改变生活其实你的猫一直都看不起你坐上来,自己动!安全带使用体验当iPhone遇上数学在B站UP主的剪刀下诞生了各种神奇的CP组合其中最受欢迎的居然是伏地魔和林黛玉…

九项路考(2)

<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />二、侧方位停车<?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" />要点&#xff1a;1、倒车入停车位&#xff08;1&#xff09;挂倒档&#xf…

Sql Server2005对t-sql的增强之Cross Apply

Sql Server2005对t-sql的增强之Cross ApplyCross Apply使表可以和表值函数结果进行join&#xff0c;在下面的示例中建了两个表和一个表值函数&#xff0c;T_b的列a_ids中会存放a表的id用,分割的字符串连接&#xff1b;我们通过cross apply使T_a&#xff0c;T_b表通过splitIDs i…

360导航源码php,51zxw 仿360网址导航源码

1.上传网站安装程序到空间&#xff0c;空间需支持PHP&#xff0c;MYSQL数据库20M 即可。2.访问网网址执行安装&#xff0c;按照提示填入mysql数据库信息。3.安装时默认设置后台管理 用户&#xff1a;admin 密码&#xff1a;123456 (以防安装出错建议默认安装&#xff0c;然后登…

SRM 440(1-250pt, 1-500pt)

DIV1 250pt 题意&#xff1a;小球从一段折线斜坡上滚下来&#xff0c;告诉所用时间&#xff0c;求重力加速度。 解法&#xff1a;二分答案模拟即可。 tag:二分&#xff0c;simulation 1 // BEGIN CUT HERE2 /*3 * Author: plum rain4 * score :5 */6 /*7 8 */9 // END CUT…

技术 Leader 怎样带跨一个团队?

网上很多分析大公司&#xff0c;小公司的文章&#xff0c;都会提到在大公司工作就是螺丝钉&#xff0c;岗位分的非常细&#xff0c;每个人把自己的专职工作做好就行&#xff1b;而在小公司需要每个人都是多面手&#xff0c;一岗多职。这种观点我同意一半&#xff0c;在小公司中…

我怀疑全国最会吹牛的人,都在这8个公众号上了

全世界只有3.14 % 的人关注了青少年数学之旅学习如逆水行舟&#xff0c;不进则退&#xff1b;只有坚持不断的学习,才能保持进步。今天给大家精心挑选的这几个优质的公众号&#xff0c;在行业深耕已久&#xff0c;相信大家一定会有所收获&#xff0c;感兴趣的可以关注一下。Pyth…

信息化之路------广州行

刚刚参加完SAP在广州举办的“红海战略的成功之路”的主题演讲&#xff0c;同时也给SAP在广州的合作伙伴做了一次培训&#xff0c;在这次广州行的过程中&#xff0c;深深地感觉到“企业信息化广州还行”&#xff01; 这次广州之行体会颇深&#xff0c;主要有以下几点&#xff1a…

CSS hack:区分IE6 IE7 Firefox

区别不同浏览器&#xff0c;CSS hack写法&#xff1a;区别IE6与FF&#xff1a;background:orange;*background:blue;区别IE6与IE7&#xff1a;background:green !important;background:blue;区别IE7与FF&#xff1a;background:orange; *background:green;区别FF&#xff0c;IE…

win1编辑java环境,在win7下配置java编译环境

今天刚接触java编程&#xff0c;环境的配置方法比较复杂。好记性不如烂笔头&#xff0c;发个文章记录一下吧。win7系统 Jdk版本1.6用鼠标右击“我的电脑”->属性->高级->环境变量系统变量->新建->变量名&#xff1a;JAVA_HOME 变量值&#xff1a;D:Program File…

linux磁盘管理------LVM

一、需求分析1&#xff0c;当我们需要存储一个500G的不可分割文件时&#xff0c;但是我们设备上没有这么大的单个磁盘。2&#xff0c;当我们在搭建一个服务&#xff0c;由于日常运转产生大量文件&#xff0c;磁盘容量不够用了&#xff0c;怎么办&#xff1f;添加磁盘&#xff0…

在 .NET 中创建对象的几种方式的对比

在 .net 中&#xff0c;创建一个对象最简单的方法是直接使用 new (), 在实际的项目中&#xff0c;我们可能还会用到反射的方法来创建对象&#xff0c;如果你看过 Microsoft.Extensions.DependencyInjection 的源码&#xff0c;你会发现&#xff0c;为了保证在不同场景中的兼容性…

.NET设计模式(16):模版方法(Template Method)

摘要&#xff1a;Template Method模式是比较简单的设计模式之一&#xff0c;但它却是代码复用的一项基本的技术&#xff0c;在类库中尤其重要。主要内容1&#xff0e;概述2&#xff0e;Template Method解说3&#xff0e;.NET中的Template Method模式4&#xff0e;适用性及实现要…

数学界最恐怖的存在,学过数学的人,一辈子都不会忘记!

全世界只有3.14 % 的人关注了青少年数学之旅何谓数学&#xff1f;数学家Eduardo曾这样回答“数学是永恒&#xff0c;是真理&#xff0c;是一切的答案。”回首往昔数学始终伴随我们左右纵横交错的几何、繁琐复杂的运算难以求解的方程、无从下手的猜想......尽管在数学道路上有多…