У меня есть несколько представлений / компонентов; Домашняя страница, ScrapeResults и Search. Чтобы помочь вам следить за происходящим, вот несколько фрагментов кода, имеющих отношение к моей проблеме.
фрагмент приложения. vue
<template>
<v-app-bar>
<Search @selected_card="scrape"/>
</v-app-bar>
<v-content>
<v-container fluid style="width: 80%;">
<router-view :card="card"></router-view> //card prop is in ScrapeResults.vue
</v-container>
</v-content>
</template>
<script>
data() {
return {
card: {}
}
}
methods: {
scrape(card) { //card parameter value is from $emit event from Search
if(this.$router.currentRoute.name != 'scrape-results') {
this.$router.push({name: 'scrape-results', params: { card: card } });
}
else {
this.card = card;
console.log(this.card)
}
}
}
</script>
фрагмент домашней страницы. vue
<template>
<div id="home">
<h1>Home</h1>
<Search id="search" @selected_card="scrape"/>
</div>
</template>
<script>
methods: {
scrape(card) { //card parameter value is from $emit event from Search
this.$router.push({ name: 'scrape-results', params: { card: card } });
}
}
</script>
Фрагмент результатов анализа:
<template>
<div id="home">
<h1>Scrape Results</h1>
<p> {{card.name}} - {{card.set_name}} </p>
<v-img :src="card.img_url"></v-img>
</div>
</template>
<script>
...... //irrelevant stuff
props: {
card: Object
},
watch: {
card() {
console.log(this.card)
}
}
</script>
Пути в приложении:
- / (Home)
- / scrape-results (ScrapeResults)
Итак, как работает приложение, пользователь будет искать карточку (объект) и выбирать из отображаемого списка. После того, как пользователь выбирает карточку из отображаемого списка, он перенаправляется в представление результатов очистки. Все это прекрасно работает, когда выполняется из Дома. vue.
Моя проблема: если пользователь получал доступ к результатам очистки из домашней страницы. vue и все еще находился в представлении результатов очистки, если пользователь искал другую карту с помощью подключенного компонента поиска (в приложении bar) в приложении vue, то свойство карты в ScrapeResults. vue не обновляется. Странно то, что если я вручную перейду к результатам очистки, введя / scrape-results в адресной строке, ищу карту с помощью компонента «Поиск» на панели приложения, а затем опора карты обновится. Опора карты будет обновляться только в том случае, если я вручную получу доступ / очистку-результаты, а затем найду карту.
Я знаю, что все это звучит сбивающе с толку, поэтому вот клип, который я записал, демонстрирует, в чем моя проблема. Ссылка: https://www.youtube.com/watch?v=aO9qSTa9CCk&feature=youtu.be&hd=1
РЕДАКТИРОВАТЬ: определение маршрута ниже
import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '@/views/Home'
import ScrapeResults from '@/views/ScrapeResults'
Vue.use(VueRouter);
const router = new VueRouter({
mode: 'history',
routes: [
{
path: '/',
name: 'home',
component: Home
},
{
path: '/scrape-results',
name: 'scrape-results',
component: ScrapeResults,
props: true
}
]
});
export default router;