Vue 父组件调用子组件
方法一:通过ref直接调用子组件的方法
1 //在父组件中 2 <template> 3 <a @click = 'openConfigure'> 4 <a-icon type = 'setting'/> 5 配置 6 <add-or-update ref='addOrUpdate'> 7 </a> 8 </template> 9 10 <script> 11 import AddOrUpdate from '/AddOrUpdate' 12 export default { 13 components:{AddOrUpdate}, 14 data(){ 15 return{} 16 }, 17 method:{ 18 // 配置 19 openConfigure() { 20 this.$refs.addOrUpdate.show() 21 } 22 } 23 } 24 </script> 25 26 //在子组件 27 28 <template> 29 <a-modal v-model = "visible"> 30 我是子组件 31 </a-modal> 32 </template> 33 34 <script> 35 export default { 36 data(){ 37 return{ 38 // 控制弹窗显示隐藏 39 visible:false 40 } 41 }, 42 methods:{ 43 // 弹出框关闭后触发 44 show(){ 45 this.visible = true 46 } 47 }, 48 } 49 </script>
方法二:通过组件的$emit、$on方法(未校验);
1 //父组件中 2 3 <template> 4 <div> 5 <Button @click="handleClick">点击调用子组件方法</Button> 6 <Child ref="child"/> 7 </div> 8 </template> 9 10 <script> 11 import Child from './child'; 12 13 export default { 14 methods: { 15 handleClick() { 16 this.$refs.child.$emit("childmethod") //子组件$on中的名字 17 }, 18 }, 19 } 20 </script> 21 22 //子组件中 23 24 <template> 25 <div>我是子组件</div> 26 </template> 27 <script> 28 export default { 29 mounted() { 30 this.$nextTick(function() { 31 this.$on('childmethods', function() { 32 console.log('我是子组件方法'); 33 }); 34 }); 35 }, 36 }; 37 </script>