Я нуб Vuejs, и я немного застрял с функцией часов магазина Vuex.
Вот мой код для магазина:
const storeconf: StoreOptions<any> = {
state: {
string: 'teststring'
},
actions:{
changeString({commit}):any{
commit('stringChange');
}
},
mutations:{
stringChange(state){
state.string=Math.random()+' root';
}
},
modules: {
mod:{
namespaced:true,
state:{
string:'modulestring'
},
actions:{
changeString({commit}):any{
commit('stringChange');
}
},
mutations:{
stringChange(state){
state.string=Math.random()+' module';
}
},
}
}
.. и приложение:
new Vue({
el: '#app',
store: store,
template:'<button @click="doActions">click</button>',
mounted(){
this.$store.watch(
state =>[state.string, state.mod.string],
watched => console.log(watched[0]+' -- '+watched[1]);
);
},
methods:{
doActions:function(){
this.$store.dispatch('mod/changeString')
this.$store.dispatch('changeString');
}
}
Дело в том, что когда я запускаю действие в корневом хранилище, наблюдатель работает отлично, но когда я запускаю модуль пространства имен один (mod / changeString), наблюдатель вообще ничего не делает.
Что странно для меня, так это то, что действие в пространстве имен правильно меняет значение хранилища, оно просто не вызовет наблюдателя ..
Что я делаю не так?