Vue组件如何集成子组件的方法?

发布于 2022-09-12 23:28:36 字数 426 浏览 11 评论 0

比如这个Test组件:

<template>
  <div>
     <el-table ref="table" v-bind="$attrs"/>
  </div>
</template>

现在另一个组件Faker.vue引用了Test组件, 现在想调用Test中的el-table的方法需要这么调用

this.$refs.test.$refs.table.setCurrentRow()

如何做到

this.$refs.test.setCurrentRow()

这样调用?

当然了在我并不想在Test中硬写el-table中的方法做过渡。

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

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

发布评论

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

评论(2

娇纵 2022-09-19 23:28:36

Test.vue

<template>
  <div>
     <el-table ref="table" v-bind="$attrs"/>
  </div>
</template>

<script>
export default {
  mounted() {
     Object.assign(this, this.$refs.table)
  }
}
</script>

父组件

this.$refs.test.setCurrentRow()

参考代码
https://codesandbox.io/s/craz...

月隐月明月朦胧 2022-09-19 23:28:36

此问题简单来描述的话,就是Vue里面的跨组件通讯。解决方式比较多,列举几种常用的

  • busEvent
// 监听`eventName`事件
bus.$on("eventName",(params)=>{
  // todo something
})
// 销毁`eventName`广播
bus.$off("eventName")
// 执行广播
bus.$emit("eventName",params)
  • 传统通讯

    • html
    <child-node
     @change="getDataInfo"
    >
    </child-node>
    • javascript
    this.$emit("change",params)
    
    methods:{
    getDataInfo(params){
      // to do something
    }
    }
  • 构造器 & Provide & Inject

    在顶级入口,挂载构造器,然后Provide提供出去,在子级&孙级 Inject接收,调用即可

  • $refs

...更多自行百度或者谷歌

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