• 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>

  • 相关阅读:
    图像处理之matlab中imnoise函数用法详解
    Vue中的.sync修饰符
    虚数是什么
    苹果ios打包出来的ipa应用APP怎么不能安装?多种安装不上的原因排查
    华为机试真题 C++ 实现【分班问题】
    C++ 逻辑运算符
    51单片机入门(一)
    荣23转债上市价格预测
    【Java互联网技术】MinIO分布式文件存储服务
    VR数字党建:红色文化展厅和爱国主义教育线上线下联动
  • 原文地址:https://blog.csdn.net/u013592575/article/details/138195779