vue 踩坑记之<el-form>标签与<el-col>之间的套用导致点击无效的问题

本贴最后更新于 929 天前,其中的信息可能已经物是人非

起因

做一个 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 按钮,导致只有按钮可以点击,而其他组件点击无效。

  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    265 引用 • 666 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...