鍍金池/ 問答/HTML/ bus在兩個組件之間通信,第一次不觸發(fā)要如何解決?

bus在兩個組件之間通信,第一次不觸發(fā)要如何解決?

一個界面中的兩個公共組件之間需要通信,采用了bus的方法,但是發(fā)現(xiàn)第一次不觸發(fā)

傳遞數(shù)據(jù)的組件(組件一):

clipboard.png

接收數(shù)據(jù)的組件(組件二):

clipboard.png

【操作流程】:在組件一的input中修改信息,@change觸發(fā)bus發(fā)送數(shù)據(jù);在組件二中點擊按鈕,接收bus發(fā)送過來的數(shù)據(jù),并將數(shù)據(jù)入庫。

【問題】:在第一次點擊保存按鈕的時候,沒有接收到bus發(fā)送過來的數(shù)據(jù),這個要怎么解決?
【描述】:在百度上找了很多方法,說是在組件一的beforeDestory中觸發(fā)bus發(fā)送數(shù)據(jù),但是這樣的話,每次都要關(guān)閉這個界面才能獲取到數(shù)據(jù),完全不符合我的需求。
各位大神,請問下要如何解決這個問題?

回答
編輯回答
巷尾

至于首次未觸發(fā),主要還是頁面未創(chuàng)建的時候,按鈕已經(jīng)發(fā)出了消息,頁面當然接收不到了
在組件二中采用beforeCreate來獲取bus的數(shù)據(jù)就可以解決了。代碼如下:

    beforeCreate(){
        Bus.$on('modify', (e) => {
            console.log('e---<',e);
            this.name = e.name;
            this.value = e.value
        })
    },
    beforeDestroy() {
        Bus.$off('modify');
    },
2017年3月27日 15:21