有没有办法在两个命名空间的vuex模块之间分配操作?

时间:2017-03-23 18:26:25

标签: vue.js vuejs2 vuex

是否可以在命名空间模块之间调度操作?

E.g。我有vuex模块“gameboard”和“notification”。每个都是命名空间。我想从游戏板向通知模块发送一个动作。

我以为我可以在调度操作名称中使用模块名称,如下所示:

// store/modules/gameboard.js
const actions = {
    myaction ({dispatch}) {
        ...
        dispatch('notification/triggerSelfDismissingNotifcation', {...})
    }
}

// store/modules/notification.js
const actions = {
    triggerSelfDismissingNotification (context, payload) {
        ...
    }
}

但是当我尝试这样做时,我得到的错误让我觉得vuex试图在我的游戏板模块中发送一个动作:

  

[vuex]未知的本地操作类型:notification / triggerSelfDismissingNotification,全局类型:gameboard / notification / triggerSelfDismissingNotification

有没有办法从vuex模块调度到模块,还是需要在root vuex实例中创建某种桥?

1 个答案:

答案 0 :(得分:194)

您只需要指定从根上下文调度:

// from the gameboard.js vuex module
dispatch('notification/triggerSelfDismissingNotifcation', {...}, {root:true})

现在,当调度到达根时,它将具有通知模块的正确命名空间路径(相对于根实例)。

假设您在vuex商店模块上设置了namespaced: true