[element UI]记录一个“el-table里的el-dialog重叠问题”的解决

这里记录一个作为前端初学者使用vue+elementUI遇到的问题(犯的错误)。
在项目里,用一张表来展示所有的编译记录,每个文件的编译结果为一条记录。需要实现点击展示项目编译结果,如图,当点击log的时候,会弹出响应的log内容。


image.png

image.png

问题的重现,运行2个(或者多个)文件,然后点击log会发现出现弹出框重叠的现象。仔细看会发现上层dialog即当前真正点击的log的结果,底层的dialog是别的行的log, 按下F12查看页面html source可以发现html同时渲染了n个(n=table length) dialog,只是z-index不同,分析代码发现其实错误很浅显,即我用一个全局变量来控制dialog的显示,而且dialog标签被嵌套在el-table里,因此table有几行就有几个dialog,而且通过同一个变量来控制,那当然出问题:


image.png

记录下这个问题的解决办法:

  1. 把<el-dialog>移出<el-table>,还是用一个全局变量来控制dialog的显示。 即全局只有一个el-dialog,适用于我这个项目的场景:一个时间只要显示一个log dialog。但不适用于你的项目本来就是要同时显示多个el-dialog.

2.table里每行都有dialog, table数据每一行都有个变量用于控制每行的dialog的显示。但是要注意vue的响应式数据更新机制,这个变量必须要在table数据声明的时候就一起声明。比如我必须在填塞table数据的时候就把这个变量写出来, 从而在点击log标题的click事件中去操作这个变量的true/false;
ts

 this.inputs.push({
            files: this.form.files,
            whList: this.form.whList,
            whString: whString,
            fileList: fileList,
            dialogVisible: false
        });

vue

<el-table>
...
<el-table-column prop="log" label="log" width="250px">
<template v-slot="scope">
                            <el-button type="text" @click="onPopupRunLog(scope.row)">{{scope.row.fullDisplayName}}
                            </el-button>
                            <el-dialog close-on-press-escape
                                    title="Build Log"
                                    :visible.sync="scope.row.dialogVisible" width="80%">
                                <pre>{{scope.row.log}}</pre>
                            </el-dialog>
                        </template>
</el-table-column>
</el-table>
  1. 把2中vue的这串抽成一个component.所有的参数传入这个组件也能完美解决这个问题。实践发现这种方法最为优秀。
<template>
<div>
    <el-button style="padding:0px;font-size: 10px" type="text" @click="popupBuildLog()"
               :loading="loading" element-loading-text=""
               element-loading-spinner="el-icon-loading"
               element-loading-background="#c4d1d2ba" >
        {{buttonContent}}
    </el-button>
    <div style="display:inline-block; margin-top:4px" v-if="!stillBuilding && buildResult !== 'PENDING'">
        <span style="color:#afa7a7e6;margin-left:8px">{{startedAgoTime}}</span>
    </div>
    <el-dialog class="log-dialog" title="Build Log"
               :visible.sync="dialogShow"
               width="80%" append-to-body>
        <pre>{{log}}</pre>
    </el-dialog>
</div>
</template>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351