【发布时间】:2018-08-17 21:54:59
【问题描述】:
我有一个从 vuex 存储中获取数据的 v-data-table。显示的数据由同一页面上的 v-select 控制。因此,当用户在 v-select 中选择公司时,v-data-tables 数据会随用户一起更新。
我的问题是,当用户在 v-select 中选择一家公司然后转到另一个页面时,重新进入该页面时数据仍然存在,但 v-select 没有选择任何公司,因此视图不同步。
如何“重置” v-data-table 在重新进入页面时不显示任何数据?我已将 vuex-store 绑定到具有计算属性的 v-data-table,因此我无法将其设置为 null。任何想法
<template>
<v-select
v-bind:items="listOfLocations"
v-model="selectedLocation"
label="Kontor"
item-value="locationid"
item-text="name"
single-line
bottom
ref="thisOne"
autocomplete></v-select>
<v-data-table
:headers="headers"
:items="listOfCompanys"
hide-actions
class="elevation-1">
<template slot="items" slot-scope="props">
<td>{{ props.item.customerid }}</td>
<td>{{ props.item.name }}</td>
</template>
</v-data-table>
<script>
import { FETCH_LOCOMPANY_LIST, FETCH_LOCATION_LIST, REMOVE_COMPANY, ADD_NEW_COMPANY } from '../store/actions.type'
export default {
name: 'Companies',
data: () => ({
selectedLocation: null,
}),
watch: {
selectedLocation: function (val, oldval) {
this.$store.dispatch(FETCH_LOCOMPANY_LIST, val)
}
},
mounted: function () {
this.$store.dispatch(FETCH_LOCATION_LIST)
if (this.selectedLocation === null || this.selectedLocation === undefined) {
this.listOfCompanys = null
}
},
computed: {
listOfLocations () {
return this.$store.state.companies.locationList
},
listOfCompanys () {
return this.$store.state.companies.companyList
}
}
【问题讨论】:
-
它不适用于您的挂载钩子(您是否试图解除绑定那里的数据?)?另外,您可以观看
$route -
我试过这个,但我不能这样做,因为计算的道具没有吸气剂。不确定我是否应该将商店列表绑定到属性并将其设置为空?挂载:function () { this.$store.dispatch(FETCH_LOCATION_LIST) if (this.selectedLocation === null || this.selectedLocation === undefined) { this.listOfCompanys = null } },
-
好吧,如果您需要专门针对该组件的公司列表,那么最好为此创建新的数据变量(因此,如果您在其他地方需要该数据,则不要改变商店 - 假设这就是原因您首先使用的是vuex)。您可以调度默认值,它应该可以工作,但不确定您的用例是什么样的,所以它可能会破坏某些东西......
标签: javascript vue.js vuejs2 vuex vuetify.js