Cześć,
Mam problem z dostępem do danych po dodaniu router-linka. W komponencie Header ustawiam zmienną i ją emituję. Przy odświeżeniu strony w drugim komponencie pojawia się oczekiwana wartość, jednak gdy wchodzimy poprzez linki zmienna jest gubiona i nie mogę jej odebrać poprzez eventbusa.
Z komponentu Header emituje zmienna:
<template>
<div>
<header class="header">
<nav>
<ul>
<li><router-link to="/">Home</router-link></li>
<li><router-link to="/first" >first Page</router-link></li>
<li><router-link to="/second">second Page</router-link></li>
</ul>
</nav>
</header>
</div>
</template>
<script>
import EventBus from '../EventBus'
export default {
name: 'Header',
data () {
return {
token: ''
}
},
methods: {
setToken () {
this.token = 1234
EventBus.$emit('emittedEvent', this.token)
console.log('Header emit', this.token)
}
},
mounted () {
console.log('mounted')
this.setToken()
}
}
</script>
Następnie w komponencie First odbieram:
<template>
<div>
First {{ getToken }}
</div>
</template>
<script>
import EventBus from '../EventBus'
export default {
name: 'First',
data () {
return {
getToken: ''
}
},
methods: {
onUpdated (item) {
this.getToken = item
console.log('item', item)
}
},
created () {
EventBus.$on('emittedEvent', this.onUpdated)
},
beforeDestroy () {
EventBus.$off('emittedEvent', this.onUpdated)
}
}
</script>
Przy odświeżaniu strony wartość jest ustawiana, jeśli zaczniemy przechodzić po podstronach wartość jest gubiona. Domyślam się że mounted / created jest wykonywany tylko podczas pierwszego ładowania strony. Ale jak w takim razie mieć dostęp przez cały czas a nie tylko podczas pierwszego załadowania danych?