elementui中el-dialog初次打开能调mounted,再次打开不调,v-if解决

el-dialog组件在第一次使用的时候没有问题,mounted也可以触发,但是关闭dialog后再次弹出就不再触发mounted,导致可能没有办法及时获取到新的数据。

解决办法:使用v-if即可

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现el-dialog拖拽不能超出指定元素,可以使用Vue.js的指令v-dialog-drag,结合CSS的position属性和JS的计算方法来实现: 1. 在el-dialog添加一个指令v-dialog-drag,如下所示: ``` <el-dialog v-dialog-drag="{target:'.target-element'}"></el-dialog> ``` 其,target属性指定了拖拽不能超出的目标元素选择器。 2. 在CSS设置目标元素的position属性为relative或absolute,如下所示: ``` .target-element { position: relative; } ``` 3. 在Vue.js的自定义指令,获取目标元素的位置和大小,计算el-dialog的位置,实现拖拽不能超出目标元素的效果,代码如下: ``` Vue.directive('dialogDrag', { bind(el, binding, vnode) { const dialogHeaderEl = el.querySelector('.el-dialog__header'); const dragDom = el.querySelector('.el-dialog'); const targetDom = document.querySelector(binding.value.target); const targetRect = targetDom.getBoundingClientRect(); dialogHeaderEl.style.cursor = 'move'; // 获取el-dialog的位置 const getDialogPosition = (event) => { const dragDomRect = dragDom.getBoundingClientRect(); const targetLeft = targetRect.left + window.pageXOffset; const targetTop = targetRect.top + window.pageYOffset; const maxLeft = targetLeft + targetDom.clientWidth - dragDomRect.width; const maxTop = targetTop + targetDom.clientHeight - dragDomRect.height; let left = dragDomRect.left + event.clientX - startX; let top = dragDomRect.top + event.clientY - startY; left = Math.max(targetLeft, Math.min(left, maxLeft)); top = Math.max(targetTop, Math.min(top, maxTop)); return {left, top}; } let startX = 0; let startY = 0; let dialogLeft = 0; let dialogTop = 0; let dragging = false; // 鼠标按下事件 const handleMousedown = (event) => { startX = event.clientX; startY = event.clientY; dialogLeft = parseFloat(getComputedStyle(dragDom).left); dialogTop = parseFloat(getComputedStyle(dragDom).top); dragging = true; } // 鼠标移动事件 const handleMousemove = (event) => { if (dragging) { const {left, top} = getDialogPosition(event); dragDom.style.left = `${left}px`; dragDom.style.top = `${top}px`; } } // 鼠标释放事件 const handleMouseup = () => { dragging = false; } dialogHeaderEl.addEventListener('mousedown', handleMousedown); document.addEventListener('mousemove', handleMousemove); document.addEventListener('mouseup', handleMouseup); } }); ``` 这样,el-dialog就可以在指定元素内拖拽,不能超出目标元素。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值