您可以为此目的使用Vuex。
向状态添加属性,例如dataset。和突变来改变它。右侧的每个组件都应该使用this.$store.state.dataset(或通过mapState)来实现自己的目的。因此,当您选择左侧列出的数据集之一时,它将使用自己的数据对存储中的数据集进行变异。
类似的东西:
store(还有其他版本,我们可以在其中使用 getter,但仅作为示例,它有点复杂)。
import Vue from 'vue';
const store = new Vuex.Store({
state: {
dataset: {}
},
mutations: {
setDataset(state, payload) {
Vue.set(state, 'dataset', payload);
}
}
});
右侧组件之一
computed: {
dataset() {
return this.$store.state.dataset;
},
keywords() {
return this.dataset.keywords;
},
volume() {
return this.dataset.volume;
}
}
左侧菜单
模板:
<a href="#" v-for="dataset in datasets" @click="changeDataset(dataset)" :key="dataset.id">{{dataset.title}}</a>
代码:
data() {
return {
datasets: [{
id: 1,
title: 'Sofas',
keywords: ['foo'],
volume: 124543
}]
}
},
methods: {
changeDataset(dataset) {
this.$store.commit('setDataset', dataset);
}
}
datasets 是您从服务器加载的数据。
但是您可以为此使用一些全局变量,而无需Vuex。也许是 Vue observable,在 2.6 中添加。