2017-10-13 5 views
0

私はthis.commit( 'updateListingAllItems'、response.data)を呼び出すときに、次のvuex設定vuex:なぜ名前空間モジュール内から突然変異を呼び出すにはプレフィックスが必要ですか?

import listing from '@/store/modules/listing' 
var store = new Vuex.Store({ 
    modules: 
    { 
     listing: listing, 

    }, 

と上場モジュールコードが

import Vue from 'vue' 
const listing = { 
    namespaced: true, 
    state: { 
     listingAllItems: [], 
     listingSelectedItems: [],  
    }, 
    mutations: { 
     updateListingAllItems(state, param) { 
     }, 
    }, 
    actions: { 
     getListingItems(context, param) { 
      var tempThis = this; 
      return new Promise((resolve, reject) => { 
       var url = 'http://WS/'; 
       Vue.http.get(url).then(response => { 
        tempThis.commit('updateListingAllItems', response.data); 
       }).catch(error => reject(error)); 
      }) 
     }, 
    }, 
    getters: {} 
} 

export default listing 

のように見えてい私はを取得しています[vuex]不明な突然変異のタイプ:updateListingAllItems

vuex guide

の名前空間ゲッターとアクションがローカライズされたゲッター、 派遣を受け、コミット予定だという。つまり、モジュールアセット を同じモジュール内に接頭辞を書き込まずに使用することができます。

なぜエラーメッセージが表示されるのですか?

答えて

0

アクションメソッド内thisは店舗です。あなたのコードは、ストアインスタンス上に接頭辞のない突然変異をコミットします。

あなたは

tempThis.commit('updateListingAllItems', response.data);

context.commit('updateListingAllItems', response.data);

に変更する場合は、あなたが期待するものを手に入れるでしょう。

関連する問題