Prop And Emit
Conceptual
每個Vue實例中,實現事件接口
使用
$on(eventName)監聽事件使用
$emit(eventName , optionalPayload)觸發事件
Prop Code
參考資料:
Parent
<template>
<div>
<div>父组件的toCity{{toCity}}</div>
<train-city @showCityName="updateCity" :sendData="toCity"></train-city>
</div>
<template>
<script>
import TrainCity from "./train-city";
export default {
name:'index',
components: {TrainCity},
data () {
return {
toCity:"北京"
}
},
methods:{
updateCity(data){//触发子组件城市选择-选择城市的事件
this.toCity = data.cityname;//改变了父组件的值
console.log('toCity:'+this.toCity)
}
}
}
</script>Child
流程說明:
父組件在渲染畫面時,遇到
train-city組件,就去子組件找template渲染出來子組件遇到
sendData就到props:['sendData']中找尋資料,發現是
props就去父組件找:sendData然後發現父組件中設定的,
:sendData =" toCity"(綁定)所以子組件的這個
sendData就會等於toCiry的值。
Emit Code
參考資料:
Parent
Child(myButton4.vue)
流程說明:
在父組件渲染畫面時,會渲染出一個數值,與兩個按鈕(子組件)
當觸發第一個按鈕時(
@increment1="incrementTotal1"),會到子組件找出@click="incrementCounter"你可以把子組件想成
@increment1 = "incrementCounter"子組件就會通知它的
methods:incrementCounter要動作囉而子組件,就會emit(發送)消息,跟父組件說
incrementTotal1要動作了這時父組件,就會去通知它的
methods:incrementTotal1動作。
Last updated
Was this helpful?