Vue項目中如何在父組件中直接調用子組件的方法:
方案一:通過ref直接調用子組件的方法;
//父組件中 <template> <div> <Button @click="handleClick">點擊調用子組件方法</Button> <Child ref="child"/> </div> </template> <script> import Child from './child'; export default { methods: { handleClick() { this.$refs.child.sing(); }, }, } </script> //子組件中 <template> <div>我是子組件</div> </template> <script> export default { methods: { sing() { console.log('我是子組件的方法'); }, }, }; </script>
方案二:通過組件的$emit、$on方法;
//父組件中 <template> <div> <Button @click="handleClick">點擊調用子組件方法</Button> <Child ref="child"/> </div> </template> <script> import Child from './child'; export default { methods: { handleClick() { this.$refs.child.$emit("childmethod") //子組件$on中的名字 }, }, } </script> //子組件中 <template> <div>我是子組件</div> </template> <script> export default { mounted() { this.$nextTick(function() { this.$on('childmethods', function() { console.log('我是子組件方法'); }); }); }, }; </script>