俗话说的好,项目大了遇到的bug自然也就多了,所以整理下自己遇到过的饿了么ui组件的bug,基于vue2的(3还没用上,用上的话再说)。
也许是饿了么不维护的原因,所以导致bug一直在,但奈何项目用啥不是我来决定,只能和大家一样再度趟雷,话不多说,直接开说吧。
输入框、选择器常见bug
问题场景:
你的输入框或是选择器组件和其他组件嵌套过深就会导致,文字输入不显示,选择选项不显示。
解决方法:
vm.$forceUpdate()
迫使 Vue 实例重新渲染。注意它仅仅影响实例本身和插入插槽内容的子组件,而不是所有子组件.
给input输入框绑定input/change事件,事件里调用这个方法
给选择器绑定change事件,事件里调用这个方法
例
<el-input v-model="input" placeholder="请输入内容" @input="change"></el-input>
<script>
export default {
data() {
return {
input: ''
}
},
methods:{
change() {
this.$forceUpdate();
}
}
}
</script>
问题场景:
你的选择器组件在对话框组件表单组件嵌套就会导致,在data里赋初始值并没有用,无法生效,
解决方法:
等dialog组件打开后,传值过去,运用this.$set添加值
向响应式对象中添加一个 property,并确保这个新 property 同样是响应式的,且触发视图更新。它必须用于向响应式对象上添加新 property,因为 Vue 无法探测普通的新增 property (比如 this.myObject.newProperty = ‘hi’)
2.或是通过object.assign()来传值,第一种不行就可以尝试第二种。
问题场景:
在element表格数据过多的时候,多表头固定列就会出现只有部分固定,或是固定列展现宽度过长,遮挡其他行。
解决方法:
要对table的height属性进行配置,还有就是对列的宽度属性要设置好,根据自己的情况来设置,当然子列相加的宽度要等有父表头的宽度。
<el-table
:data="anchorTable"
border
height="calc(80vh - 80px)"
><el-table-column
v-for="(item,index) in columns"
:key="item.prop"
:label="item.label"
:fixed="index<=3?true:false"
:width="index<=3?'80':'100'"
align="center"
label-class-name="column"
>
<el-table-column
v-if="item.children"
:label="item.children.label"
align="center"
show-overflow-tooltip
:prop="item.prop"
:label-class-name="item.class+' column'"
></el-table-column>
</el-table-column> </el-table>
结尾:
如果还有其他bug,我会抽空尽量更新,也欢迎其他人的沟通交流,当然如果我说法可能有点问题也可以说一下,避免误会。励志做一个没有bug的梦。