vue项目中Element组件库的一些bug问题

1,435 阅读2分钟

这是我参与8月更文挑战的第5天,活动详情查看:8月更文挑战

在开发项目的过程中发现了一些Element组件库的一些bug问题,浪费了很多调试时间,整理了一些遇到的,发出来,避免大家再走我同样的老路,也提升大家的开发效率

1.Element Popconfirm气泡确认框 事件无法实现问题

1.官方网站的用例:


<template>
    <el-popconfirm
      confirmButtonText='好的'
      cancelButtonText='不用了'
      icon="el-icon-info"
      iconColor="red"
      title="这是一段内容确定删除吗?"
    >
      <el-button slot="reference">删除</el-button>
    </el-popconfirm>
</template>

2.用例效果:

截屏2021-08-18 下午7.39.09.png

3.用到这个确定窗,就一定需要去实现弹窗交互的事件,如图中的"确定"和"取消",否则这个控件就毫无用处,官方API没有说明事件使用方法,自己查了下,然后又看了源代码:

var Od=r({
	name:"ElPopconfirm",
	props:{
		title:{type:String},
		confirmButtonText:
			{type:String,default:W("el.popconfirm.confirmButtonText")},
		cancelButtonText:
			{type:String,default:W("el.popconfirm.cancelButtonText")},
		confirmButtonType:
			{type:String,default:"primary"},
		cancelButtonType:
			{type:String,default:"text"},
		icon:{type:String,default:"el-icon-question"},
		iconColor:{type:String,default:"#f90"},
		hideIcon:{type:Boolean,default:!1}},
		components:{ElPopover:Zs,ElButton:Et},
		data:function(){return{visible:!1}},
		methods:{ //方法
			confirm:function(){this.visible=!1,this.$emit("onConfirm")},
			cancel:function(){this.visible=!1,this.$emit("onCancel")}
		}
	}

4.只要去调用onConfirm和onCancel即可实现***:

 <el-popconfirm 
     cancelButtonText="取消"
     confirmButtonText="确定"
     icon="el-icon-info"
     iconColor="red"
     title="删除后数据将无法恢复,确定要删除吗?"
     @onConfirm="delData"
     @onCancel="cancelData"
    >
    <el-button type="danger" size="mini" slot="reference">删除</el-button>
 </el-popconfirm>

2.el-table中插槽里面 el-popover点击无效问题:

1.官方网站的用例:


<el-popover placement="top" width="160" v-model="visible">
  <p>这是一段内容这是一段内容确定删除吗?</p> 
  <div style="text-align: right; margin: 0"> 
  <el-button size="mini" type="text" @click="visible = false">取消</el-button> 
  <el-button type="primary" size="mini" @click="visible = false">确定</el-button> 
  </div>
  <el-button slot="reference">删除</el-button> 
</el-popover> 

<script> 
export default { 
    data() { 
         return { 
           visible: false, 
         }; 
    } 
}
</script>

2.用例效果:

截屏2021-08-18 下午7.52.11.png

3.项目开发发现问题是在表格组件当中操作插槽栏的操作按钮,增删改查,这些基础功能,需要做到用户操作的二次确认,才能正确操作,然后当我插槽里粘贴了element官方的用例的时候,点击发现没有反应,

后面研究发现v-module这个绑定值浏览器未识别,可能是版本问题吧,后面我切换成value绑定这个变量,发现效果是有了,但是关闭窗口就无法实现了,官方用例这个绑定值的效果大致理解为提示窗口的显示隐藏功能,但是还是未能实现........

4.最终解决方案

我自己的项目当中有两种解决方案,

  • 一种是在原本官方用例上单独写点击事件,就是弹窗无法自动关闭,需要点击其他空白区域关闭,实在不行就动态控制弹窗的样式设置display:none。
  • 另外一种就是改用气泡确认框,但是有上面Element Popconfirm气泡确认框 事件无法实现的问题