在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 在vue的cli腳手架中同級頁面bus傳遞參數(shù),為啥數(shù)據(jù)不會更新....

在vue的cli腳手架中同級頁面bus傳遞參數(shù),為啥數(shù)據(jù)不會更新....

跳轉(zhuǎn)前的頁面代碼

<template>
    <div>
        <button @click="sendMsg">send</button>
    </div>
</template>

<script>
export default {
    name:"demo",
    data: function () {
        return {
            content: "Yin Han"
        } 
    },
    methods: {
        sendMsg: function(){
            this.bus.$emit('msg',"sssss")
            this.$router.push('/Demo1')
        }
    }
}
</script>

跳轉(zhuǎn)后的頁面代碼

<template>
    <div>
        <button>{{getMsg}}</button>
        <button @click="back">back</button>
    </div>
</template>

<script>
export default {
    name: "demo1",
    data: function(){
        return {
            getMsg: "123"
        }
    },
    methods: {
        back: function(){
            this.$router.push('/')
        }
    },
    mounted: function(){
        this.bus.$on('msg',function(msg){
            this.getMsg = msg;
            this.bus.$off('msg')
        })
    }
}
</script>

所想的應(yīng)該在A頁面點擊send之后會跳轉(zhuǎn)B然后B通過BUS拿到值更新了getMsg,但是實際操作過程并沒有,并且,在第一次點send時候$on沒有觸發(fā),第二次之后才會觸發(fā),參考了Vue中同級組件使用bus傳值如何優(yōu)雅地完成?但是并沒有給到有效的解決。

回答
編輯回答
誮惜顏

監(jiān)聽在前,觸發(fā)在后;然而你卻正好相反

2017年12月15日 17:48
編輯回答
別傷我

第一次:前者觸發(fā)的時候,后者的生命周期都還沒開始,emit的事件沒有被接收。
第二次:后者的生命周期已經(jīng)開始了,在mounted中注冊了事件監(jiān)聽,且還沒有被emit,這個監(jiān)聽未銷毀。然后前者再一次emit的時候,這個監(jiān)聽就起了作用,所以才會覺得是第二次后才觸發(fā)。

2017年3月23日 10:17
編輯回答
尛曖昧

這就像你在晚上說今天早上我要干什么,而早上的你并不知道要干這件事。

2017年4月25日 20:49