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>

 

posted @ 2022-03-08 15:53  无效_rank  阅读(298)  评论(0)    收藏  举报