vue$emit、$on、$refsの概要
3424 ワード
1、$emit
現在のインスタンスのイベントをトリガーします.追加のパラメータはリスナーコールバックに渡されます
ex:サブコンポーネントが親コンポーネントのメソッドを呼び出し、データを渡す注意:サブコンポーネントラベルの時間も大文字と小文字を区別せずに「-」で区切る
サブアセンブリ:
親コンポーネント:
2、$on
兄弟コンポーネント間でデータを転送
まずvueの空白のインスタンス(兄弟間のブリッジ)を作成します.
サブアセンブリchild_a
送信者は$emitカスタムイベントを使用してデータを送信します.
サブアセンブリchild_b
受信者は$onでカスタムイベントのcallbackを傍受してデータを受信する
親コンポーネント:
3、$refs
親コンポーネントがサブコンポーネントを呼び出す方法で、データを渡すことができます注意:サブコンポーネントラベルのイベントも大文字と小文字を区別せずに「-」で区切る
親コンポーネント:
サブアセンブリ:
現在のインスタンスのイベントをトリガーします.追加のパラメータはリスナーコールバックに渡されます
ex:サブコンポーネントが親コンポーネントのメソッドを呼び出し、データを渡す注意:サブコンポーネントラベルの時間も大文字と小文字を区別せずに「-」で区切る
サブアセンブリ:
export default {
data() {
return {
msg: " "
}
},
methods: {
emitEvent(){
this.$emit('my-event', this.msg)
// , $emit my-event , this.msg 。
}
}
}
親コンポーネント:
import ChildA from './components/child.vue'
export default {
components: {
ChildA
},
methods: {
getMyEvent(msg){
console.log(' --------->'+msg)// --------->
}
}
}
2、$on
兄弟コンポーネント間でデータを転送
まずvueの空白のインスタンス(兄弟間のブリッジ)を作成します.
import Vue from 'vue'
export default new Vue()
サブアセンブリchild_a
送信者は$emitカスタムイベントを使用してデータを送信します.
A ->{{msg}}
import vmson from "../util/emptyVue"
export default {
data(){
return {
msg:{
a:'111',
b:'222'
}
}
},
methods:{
send:function(){
vmson.$emit("aevent",this.msg)
}
}
}
サブアセンブリchild_b
受信者は$onでカスタムイベントのcallbackを傍受してデータを受信する
b ,a ->{{msg}}
import vmson from "../util/emptyVue"
export default {
data(){
return {
msg:""
}
},
mounted(){
vmson.$on("aevent",(val)=>{// aevent, ;
console.log(val);// : a
this.msg = val;
})
}
}
親コンポーネント:
import childa from './childa.vue';
import childb from './childb.vue';
export default {
components:{
childa,
childb
},
data(){
return {
msg:""
}
},
methods:{
}
}
3、$refs
親コンポーネントがサブコンポーネントを呼び出す方法で、データを渡すことができます注意:サブコンポーネントラベルのイベントも大文字と小文字を区別せずに「-」で区切る
親コンポーネント:
import ChildA from './components/child.vue'
export default {
components: {
ChildA
},
data() {
return {
msg: " "
}
},
methods: {
getMyEvent(){
this.$refs.child.emitEvent(this.msg);
// ,child ref ,emitEvent 。
}
}
}
サブアセンブリ:
export default {
methods: {
emitEvent(msg){
console.log(' --------->'+msg)// --------->
}
}
}