2017-03-05 26 views
5

私のvuexストアには2つのモジュールがあります。モジュールloading別のモジュールの状態をVuexの1つのモジュールから変更する

var store = new Vuex.Store({ 
    modules: { 
     loading: loading 
     posts: posts 
    } 
}); 

、私はtrueまたはfalseのいずれかを設定しても、このプロパティを設定するTOGGLE_SAVINGという名前の変異機能を持つことができるプロパティsavingを持っています。

モジュールpostsでは、投稿を取得する前後に、savingというプロパティを変更したいとします。私は、postsモジュール内のアクションの1つからcommit('TOGGLE_SAVING')を呼び出すことでそれを実行しています。それがコミットしようとしたとき、私はcommitを使用して別のモジュールに状態を変異させることができますどのようにコンソールに

[vuex] unknown local mutation type: TOGGLE_LOADING, global type: posts/TOGGLE_LOADING 

を次のエラーを

var getPosts = function (context) { 
    contex.commit(TOGGLE_LOADING); 
}; 

得ましたか。

答えて

4

提案hereとして、次のパラメータでそれを試してみてください。

commit('TOGGLE_SAVING', null, { root: true }) 

namespacedをtrueに設定する必要があります。

+0

それは素晴らしい作品です。ありがとう –

+1

モジュールと名前空間を使用している場合は、 'commit'( 'namespace/TOGGLE_SAVING'、null、{root:true})のように' commit'に名前空間を追加することを忘れないでください。作業。 – brainbag

1

actionを使用して別のモジュールで定義されている突然変異をコミットすると、別のモジュールで状態を変更できます。このような

posts: { 
    actions: { 
    toggleSavingActions(context) { 
     // some actions 
     context.commit("TOGGLE_SAVING"); // defined in loading module 
    } 
    } 
} 
+0

これは私がそれを正確に行った方法です。私はまた、両方のモジュールで "namespace:true"を設定しました。しかし、私は '[vuex]未知のローカルな突然変異のタイプを取得しています:TOGGLE_LOADING、グローバルタイプ:posts/TOGGLE_LOADING' –

+1

oh yes.byデフォルトでは、モジュール内のアクション、突然変異、ゲッターはまだグローバル名前空間の下に登録されています。プロパティを使用するか、commit( 'someMutation'、null、{root:true})を使用してください。 – Julien

関連する問題