$emit 子組件觸發父組件的方法:javascript
<!-- 子組件 --> <template> <div id="child"> <button @click="tryToParent">click</button> </div> </template> <script> export default { name: 'child', methods:{ tryToParent(){ // 經過$emit進行觸發 // 第一個參數爲父組件監聽的事件名,後續參數爲父組件方法的參數 this.$emit("toParent","我從子組件傳來") } } } </script> <!-- 父組件 --> <template> <div id="parent"> <!-- 監聽child的toParent事件廣播,用fromChild進行處理 --> <child @toParent="fromChild"></child> </div> </template> <script> import child from "./child.vue" export default { name: 'parent', components:{child}, methods:{ fromChild(msg){ console.log(msg); // 點擊子組件的button,這裏最終打印出「我從子組件傳來」 } } } </script>
$refs 父組件獲取子組件實例,進而調用子組件方法或者直接修改子組件屬性:vue
<!-- 子組件 --> <template> <div id="child"> <div>{{message1}}</div> <div>{{message2}}</div> </div> </template> <script> export default { name: 'child', data(){ return { message1:"", message2:"" } }, methods:{ fromParent(msg){ this.message1 = msg } } } </script> <!-- 父組件 --> <template> <div id="parent"> <button @click="toChild">click</button> <child ref="child"></child> </div> </template> <script> import child from "./child.vue" export default { name: 'parent', components:{child}, methods:{ toChild(){ /** this.$refs.child返回child組件實例 **/ // 調用子組件的fromParent方法 this.$refs.child.fromParent("我從父組件傳遞過來") // 直接修改child的data this.$refs.child.message2 = "啦啦啦" } } } </script>