欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

vue中的$emit()

錢斌斌1年前8瀏覽0評論

在Vue中,一個組件可以向它的父級組件發送一個自定義事件。通過使用$emit()方法,子組件可以將一個事件掛載到當前實例上,將想要傳遞的數據作為第二個參數放在方法中。

Vue.component('child-component', {
methods: {
sendMessage: function () {
this.$emit('onChildMessage', 'Hello from child component');
}
}
});

在這個例子中,我們創建一個名為child-component的組件,并且在sendMessage方法中使用$emit來向父級組件發送一個名為onChildMessage的事件,同時傳遞一個字符串作為數據。

現在我們來看看父級組件如何監聽onChildMessage事件:

Vue.component('parent-component', {
template: '',
methods: {
receiveMessage: function (msg) {
console.log(msg);
}
},
mounted: function () {
this.$on('onChildMessage', this.receiveMessage);
},
destroyed: function () {
this.$off('onChildMessage', this.receiveMessage);
}
});

在parent-component組件中,我們定義了一個receiveMessage方法,用來處理接收到的消息。在組件被掛載后,我們使用$on方法來監聽onChildMessage事件,并將接收到的消息傳遞給receiveMessage方法進行處理。當組件被銷毀時,我們使用$off方法來取消監聽。

$emit不僅可以將數據傳遞給父級組件,還可以將數據傳遞給兄弟組件。下面我們來看一個例子:

Vue.component('parent-component', {
template: '',
methods: {
sendMessage: function () {
this.$emit('onParentMessage', 'Hello from parent component');
}
},
mounted: function () {
this.$on('onChildMessage', function (msg) {
console.log(msg);
});
}
});
Vue.component('child-component', {
template: '',
methods: {
sendMessage: function () {
this.$emit('onChildMessage', 'Hello from child component');
}
},
mounted: function () {
this.$on('onParentMessage', function (msg) {
console.log(msg);
});
}
});

在這個例子中,我們有兩個組件parent-component和child-component。我們在parent-component組件中定義了一個sendMessage方法,并在其中使用$emit方法向兄弟組件child-component發送一個名為onChildMessage的事件,并將一條消息作為數據進行傳遞。

在child-component組件中,我們也定義了一個sendMessage方法,并向父級組件發送一個名為onParentMessage的事件,并同樣將一條消息作為數據進行傳遞。同時,我們也監聽了父級組件發送的onParentMessage事件,并打印出傳遞過來的消息。

通過以上例子,我們可以看到使用$emit方法可以方便地實現組件間的通信,不管是父子組件還是兄弟組件都可以通過$emit方法發送和接收事件和數據。