起因
做一个 web 页面,页面代码 H5 和 table 嵌套。问题来了,嵌套以后,点击的页面没有响应。没办法,请教前端大佬,指出了问题,并甩出一个链接到我脸上。
链接
https://blog.csdn.net/weixin_43873156/article/details/118381784
(该链接参考自:https://blog.csdn.net/weixin_40119256/article/details/109224440 )
复现
编写简单的表单时,可以使用用来进行布局,让相关的组件放在同一行。但是今天使用时发现有两个问题:
<el-col>
</el-col>
① 如果用上以上这样的格式,布局无效
② 如果不用标签,则 form 表单的组件点击无效
问题原理
经过查找之后发现,源码中在 el-form-item.vue 的代码中发现了这样一个计算属性:
let parent = this.$parent;
let parentName = parent.$options.componentName;
while (parentName !== 'ElForm') {
if (parentName === 'ElFormItem') {
this.isNested = true;
}
parent = parent.$parent;
parentName = parent.$options.componentName;
}
return parent;
},
这里通过当前组件,一级一级向上找,直到找到 el-form 组件就返回,而其他计算属性/方法依赖 form 计算属性,这也就能解释为什么 remark 表单项能正常点击,而 name 和 type 表单项无法点击的问题了。
解决方法:
只使用 ,但使用时注意套住所有组件(即),我在使用时忘记套用 submit 按钮,导致只有按钮可以点击,而其他组件点击无效。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于