Vue.js 访问动态子组件

Vue.js 访问动态子组件,vue.js,vuejs2,vue-component,Vue.js,Vuejs2,Vue Component,如何访问我的子组件?例如,我的父组件具有以下“动态”组件(该组件在运行时随时更改) 使用ref属性,给您一个示例: Vue.component('com1'{ 模板:“组件com1”, 方法:{ fn(){ 警报('调用的方法') } } }) var app=新的Vue({ el:“#应用程序”, 数据(){ }, 计算:{ whichCom(){ 返回“com1” } }, 方法:{ b单击(){ 此.$refs.myCom.fn() } } }) com1的调用方法 使用ref属性,给

如何访问我的子组件?例如,我的父组件具有以下“动态”组件(该组件在运行时随时更改)


使用ref属性,给您一个示例:

Vue.component('com1'{
模板:“组件com1”,
方法:{
fn(){
警报('调用的方法')
}
}
})
var app=新的Vue({
el:“#应用程序”,
数据(){
},
计算:{
whichCom(){
返回“com1”
}
},
方法:{
b单击(){
此.$refs.myCom.fn()
}
}
})

com1的调用方法

使用ref属性,给出一个示例:

Vue.component('com1'{
模板:“组件com1”,
方法:{
fn(){
警报('调用的方法')
}
}
})
var app=新的Vue({
el:“#应用程序”,
数据(){
},
计算:{
whichCom(){
返回“com1”
}
},
方法:{
b单击(){
此.$refs.myCom.fn()
}
}
})

com1的调用方法
<template>
  <!-- The below component count be Component1 or Component2, etc. -->
  <component id="my-cmp" v-if="templateComponent" :is="templateComponent"></component>
</template>
<template>
  <!-- The below component count be Component1 or Component2, etc. -->
  <component id="my-cmp" v-if="templateComponent" :is="templateComponent"></component>
</template>

<script type="text/javascript">
export default {

  components: {
    'cmp1': Component1,
    'cmp2': Component1,
  },

  computed: {
    templateComponent() {
      // ...some logic that will determine if to use/chage to Component1 or Component2
      return 'cmp1'
    },
  },

  methods: {
    someTrigger() {
      // how can I reference #my-cmp?
      // For the purpose of; myCmp.doSomething()

      // I have tried the below technique BUT this will call doSomething 
      // on BOTH components not just the current/visible one

      this.$emit('doSomethingNow') // Component1 and Component2 register using this.$parent.$on('doSomethingNow', this.doSomething)
    }
  }
}
</script>