Я нашел другой способ, используя помощники Vuex mapStates и mapActions.Это немного более многословно.Таким образом, использование подхода привязки v-модели лучше.
// Кстати: если вы используете подход, предложенный ittus
, тогда вы будете использовать привязку v-модели, как показано ниже:
<input v-model="a" />
// Используя другой подход, который я использовал, вам придется выполнить двустороннюю привязку, как показано ниже:
<input :value="a" @input="updateA" />
Если вы хотите использовать привязку v-модели, тогда код будет чем-токак показано ниже:
// Vuex store
....
modules: {ModuleA, ...}
// ModuleA of store
export default {
namespaced: true,
states: {
a: '',
},
mutations: {
updateA: (state, value) => state.a = value
},
actions: {
updateA(context, value) { context.commit('updateA', value) }
}
}
// Then in your Component you will bind this Vuex module state as below
new Vue({
store,
computed: {
a: {
get() { this.$store.state.ModuleA.a; }
set(value) {this.updateA(value);}
},
},
methods: {
...mapActions('MyModule', [ updateA ]),
}
})