vue.js - 如何在 VueJs 中获取子组件的数据?

标签 vue.js vuejs2 vue-component

这是一个简单的问题,但我不知道使用 Vue2 正确完成此问题的最佳方法:

父组件:

<template>
  <div class="parent">
    <child></child>
    {{value}} //How to get it
  </div>
</template>

子组件:

<template>
  <div class="child">
    <p>This {{value}} is 123</p>
  </div>
</template>

<script>
export default {
  data: function () {
    return { value: 123 }
  }
}
</script>

最佳答案

实现这一目标的一些方法包括:

  • 您可以通过 ref 直接访问子虚拟机,但这会变得很棘手,因为在子组件挂载之前不会填充 ref,并且 $refs 不是响应式(Reactive)的,这意味着你必须做一些像这样的骇人听闻的事情:

    <template>
      <div class="parent">
        <child ref="child"></child>
        <template v-if="mounted">{{ $refs.child.value }}</template>
      </div>
    </template>
    
    data() {
      return {
        mounted: false
      }
    },
    
    mounted() {
      this.mounted = true;
    }
    
  • $emit 子组件中的值,以便父组件可以在准备好或更改时获取该值。

  • 使用Vuex (或类似原则)跨组件共享状态。
  • 重新设计组件,使您想要的数据归父组件所有,并通过 prop 绑定(bind)传递给子组件。
  • (高级)使用 portal-vue当您希望组件模板的片段存在于 DOM 的其他位置时使用插件。

关于vue.js - 如何在 VueJs 中获取子组件的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47765755/

相关文章:

javascript - 拉拉维尔 5 : Append input text depends on the selected option vue js

vue.js - OnChange 传递项目文本和项目值 Vuetify

javascript - Vue没有将数据绑定(bind)到图像src

vue.js - 使用 nuxt.js 和 vue.js 在 <template> 标签内加载脚本

javascript - 如何使用Vuex设置Vuetify数据表中的项目?

vue.js - 如何求和并将其显示在 vuetify 数据表中

javascript - Vue.js - 当 'copying it' 到另一个数据属性时不要绑定(bind)对象

javascript - Vuetify 数据表创建自定义过滤器

vue.js - Vuejs 无法从组件访问引用

javascript - Vue - 在 v-for 循环中返回 Promise