1, 问题复现

1, popover中显示一个表格:

  1. <el-popover
  2. ref="popoverRef"
  3. placement="right"
  4. width="400"
  5. trigger="click">
  6. <el-table
  7. :data="tableData"
  8. stripe
  9. style="width: 100%"
  10. @cell-click = "hidePop">
  11. <el-table-column
  12. prop="date"
  13. label="日期"
  14. width="100">
  15. </el-table-column>
  16. <el-table-column
  17. prop="address"
  18. label="地址"
  19. width="auto">
  20. </el-table-column>
  21. </el-table>
  22. <el-button type="text" slot="reference" style="margin-bottom: 6px">新消息</el-button>
  23. </el-popover>

image.png

2, 点击任意一条表格数据, 关闭当前popover, 打开一个新的dialog 组件

  1. <el-dialog
  2. title="提示"
  3. :visible.sync="dialogVisible"
  4. width="30%"
  5. :before-close="handleClose">
  6. <span>这是一段信息</span>
  7. <span slot="footer" class="dialog-footer">
  8. <el-button @click="dialogVisible = false">取 消</el-button>
  9. <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
  10. </span>
  11. </el-dialog>
  1. export default {
  2. name: 'Message',
  3. data() {
  4. return {
  5. dialogVisible: false,
  6. tableData: [{
  7. date: '2016-05-02',
  8. name: '王小虎',
  9. address: '上海市普陀区金沙江路 1518 弄'
  10. }, {
  11. date: '2016-05-04',
  12. name: '王小虎',
  13. address: '上海市普陀区金沙江路 1517 弄'
  14. }, {
  15. date: '2016-05-01',
  16. name: '王小虎',
  17. address: '上海市普陀区金沙江路 1519 弄'
  18. }, {
  19. date: '2016-05-03',
  20. name: '王小虎',
  21. address: '上海市普陀区金沙江路 1516 弄'
  22. }]
  23. };
  24. },
  25. methods:{
  26. hidePop(){
  27. this.$refs.popoverRef.doClose();
  28. this.dialogVisible = true
  29. },
  30. handleClose(done) {
  31. this.$confirm('确认关闭?')
  32. .then(_ => {
  33. done();
  34. })
  35. .catch(_ => {});
  36. }
  37. }
  38. };

hidePop() 方法:先关闭老的popover, 再打开新的dialog

2, 问题截图:

image.png
当我把el-dialog嵌套在el-popover中,点击打开dialog时,发现整个页面变暗,这个问题是因为el-dialog和el-popover之间的层级关系,当我把el-dialog嵌套在el-popover中,dialog就挂在了el-popover上,如果想要实现当dialog窗口出现时,它是亮的,其他页面都变暗,就需要将el-dialog拉到body上

属性上加:append-to-body=”true”

image.png