• vue:使用:element 中弹框中获取table高度无效


    场景:dialog 弹框中想要获取里面table的高度,但是直接用 tableRef.value?.$el.offsetHeight 获取无效。

    原因:dialog中有个弹框打开的加载动画。需要用监听 opeined 【Dialog 打开动画结束时的回调】等动画加载后然后进行高度获取

    一、demo方案

    在Vue 3中,您可以使用watch监听dialog组件的opened属性,并在属性变化时执行相应的操作。在watch的回调函数中,您可以使用nextTick确保在下一个DOM更新周期中获取dialog组件加载完毕后的状态。

    1. <script>
    2. import { ref, watch, nextTick } from 'vue';
    3. export default {
    4. setup() {
    5. const dialogVisible = ref(false);
    6. const handleDialogOpened = () => {
    7. nextTick(() => {
    8. console.log('Dialog加载完毕');
    9. // 在这里执行您想要在Dialog加载完毕后执行的操作
    10. });
    11. };
    12. watch(dialogVisible, (newValue) => {
    13. if (newValue) {
    14. console.log('Dialog打开');
    15. } else {
    16. console.log('Dialog关闭');
    17. }
    18. });
    19. return {
    20. dialogVisible,
    21. handleDialogOpened
    22. };
    23. }
    24. };
    25. script>

    二、完整代码

    1. <Dialog
    2. v-model="dialogVisible"
    3. title="标题"
    4. @opened="handleDialogOpened"
    5. >
    6. <el-table ref="tableRef" :data="list" border>
    7. <el-table-column label="姓名1" prop="remark1" show-overflow-tooltip />
    8. <el-table-column label="姓名2" prop="remark2" show-overflow-tooltip />
    9. <el-table-column label="姓名3" prop="remark3" show-overflow-tooltip />
    10. el-table>
    11. Dialog>
    12. <script>
    13. const dialogTitle = ref('审核') // 弹框标题
    14. /** 弹窗打开 **/
    15. const open = async (params, fileDetailList) => {
    16. console.log('弹框打开', params, fileDetailList)
    17. resetForm()
    18. dialogVisible.value = true
    19. }
    20. defineExpose({ open }) // 提供 open 方法,用于打开弹窗
    21. /** */
    22. const handleDialogOpened = () => {
    23. nextTick(() => {
    24. console.log('Dialog加载完毕')
    25. // 在这里执行您想要在Dialog加载完毕后执行的操作
    26. handleHeight()
    27. })
    28. }
    29. /** 动态获取高度 */
    30. const handleHeight = () => {
    31. nextTick(() => {
    32. if (tableRef.value?.$el) {
    33. console.log('Table的高度:', tableRef.value?.$el.offsetHeight)
    34. }
    35. const windowHeight = document.documentElement.clientHeight
    36. console.log('当前屏幕高度', windowHeight)
    37. })
    38. }
    39. script>

  • 相关阅读:
    VGG 07
    Keeplived练习
    盛最多水的容器
    spyglass 学习笔记之lint check
    使用 uWSGI 部署 Django 应用详解
    操作系统 、人、 宇宙
    计算机网络-IS-IS基础配置实验
    在没有推出硬盘的情况下,重启mac电脑,外接移动硬盘无法加载显示?
    EPOLL单线程版本 基于reactor 的 httpserver文件下载 支持多个客户端同时处理
    (附源码)计算机毕业设计SSM酒店客户管理系统
  • 原文地址:https://blog.csdn.net/u013592575/article/details/138195779