2017-08-29 34 views
0

我只想在vuex中创建动态注册模块,但它似乎无法正常工作。 这是我的存储文件vuex注册模块中的未知突变类型

import Vuex from 'vuex' 
import descriptionModule from './module/descriptionModule'; 
const {state: stateModule, getters, mutations} = descriptionModule; 

const createStore =() => { 
    return new Vuex.Store({ 
    state: { 
     descriptions: [], 
    }, 
    mutations: { 
     addDescriptions(state, payload){ 
     state.descriptions.push(state.descriptions.length + 1); 
     createStore().registerModule(`descriptionModule${payload}`, { 
      state: stateModule, 
      getters, 
      mutations, 
      namespaced: true // making our module reusable 
     }); 
     } 
    } 
    }) 
}; 

export default createStore 

,这是我将注册

const state =() => { 
    return {description: ''} 
}; 
const getters = { 
    description: (state) => state.description 
}; 
const mutations = { 
    updateDescription(state, payloads){ 
    state.description = payloads; 
    } 
}; 
export default { 
    state,getters,mutations 
} 

我的自定义模块,然后这是我将调用addDescriptions突变,并承诺updateDescription从registeredModule

自定义方法
beforeMount(){ 
    console.log("hahahaha"); 
    this.$store.commit('addDescriptions', this.id); 
}, 
... more code .... 
methods: { 
     onType(editor, content){ 
     console.log(this.$store.state.a); 
     console.log(this.$store.state); 
     console.log(this.$store); 
     this.$store.commit(`descriptionModule${this.id}/updateDescription`, content, {root: true}) 
     } 
    } 

onType调用,我在浏览器中得到错误unknown mutation type: descriptionModuleeditor1/updateDescription

目前的IAM以下这个解决方案link,但它不为我工作:(

谁能解决这个,,,对不起,通过分量/网页上的英文不好

回答

0

调用$ store.registerModule() beforeMount

beforeMount(){ 
     this.$store.registerModule(`descriptionModule${this.id}`, { 
     state: stateModule, 
     getters, 
     mutations, 
     namespaced: true // making our module reusable 
     }); 
    },