【发布时间】:2019-12-23 13:12:27
【问题描述】:
在我的Vue.js 组件中,我有v-select 元素。当用户在该小部件中选择某个值时,我调用toDo 函数,该函数在methods 块中定义。正如您在该函数中看到的那样,我想知道名为filters 的getter 的值。不幸的是,它返回给我undefined。同时在 Vue 的 DevTools 中,我注意到这个 getter 是有价值的。函数中如何正确获取 getter 的值?
问题:
我在模板中使用filters,它们显示在界面上没有任何问题。但是在toDo 函数中,同样的filters 返回undefined 结果。我想了解这种奇怪的行为。
<div
v-for="filter in filters"
:key="filter.id">
<v-checkbox
v-for="(item, index) in filter.values"
:label="filter.description_values[index]"
:value="item"
:key="item"
v-model="filter.selected_values"
hide-details>
</v-checkbox>
<v-select
v-if="filter.widget==='single_dropdown'"
v-model="filter.selected_values"
:items="filter.filter_values"
label="Select ..."
dense
solo
@change="toDo">
</v-select>
</div>
***
computed: {
...mapGetters('store', [
'filters'
]),
},
methods: {
toDo: async (value) {
await console.log(this.filters) // result: undefined
}
}
***
Vuex 存储:
import { api } from '../../services/api'
export default {
namespaced: true,
state: {
filters: null
},
getters: {
filters: state => state.filters
},
mutations: {
setStateValue: (state, {key, value}) => {
state[key] = value
}
},
actions: {
getFilters: async (context) => {
await api.get('/api/filters').then((response) => {
context.commit('setStateValue', {
key: 'filters',
value: response.data
})
})
}
}
}
【问题讨论】:
标签: javascript vue.js vuejs2 vuex