二次封装的element form表单组件,如何让父级直接通过$refs[xxx].resetFields()方法呢?

发布于 2022-09-12 23:12:40 字数 369 浏览 13 评论 0

这是实例:image.png

这是封装:image.png

这是目前使用:image.png

这是this.$refs[xxx]打印:image.png

想达成:优化成不通过$children

大家都很多方法,只不过不太适合,我只想改造好组件,然后父级直接调用是最方便的。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

心凉怎暖 2022-09-19 23:12:40

在你封装的组件上写一个resetFields方法去执行el-form的resetFields方法,对应就会直接对引用你封装的组件的ref暴露resetFields方法了

吃→可爱长大的 2022-09-19 23:12:40

你可以参考一下这个和你需求差不多
https://stackoverflow.com/que...

瀞厅☆埖开 2022-09-19 23:12:40

改下组件结构吧,直接把v-for写在 Form上

<Form v-for="item in xx" :ref="itme.name"
// ref可以是上面这种唯一值,也可以
<Form v-for="item in xx" ref="demo"
// 这样就可以直接写 this.$refs.demo[1].resetFileds()
ぃ双果 2022-09-19 23:12:40

一直这样使用,没有任何问题,你可以试试

子组件

props:{
 refObj: {
      type: Object,
      default: null,
    }
},
  watch: {
    data: {
      handler: function (val) {
        // 将form实例返回到父级
        this.$emit("update:refObj", this.$refs.form);
      },
      deep: true, // 深度监听
    },
  },
  mounted() {
    // 将form实例返回到父级
    this.$emit("update:refObj", this.$refs.form);
  },
  

父组件
:ref-obj.sync="formInfo.ref"

调用form表单方法
this.formInfo.ref.resetFields();

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文