2017-10-13 67 views
0

我有以下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 

調用this.commit( 'updateListingAllItems',response.data)我得到當[vuex]未知突變類型:updateListingAllItems

vuex guide

命名空間getter和行動將得到本地化的干將, 調度和提交。換句話說,您可以使用模塊資產 而無需在同一模塊中編寫前綴

爲什麼我會收到錯誤消息呢?

回答

0

在一個行動方法this是商店。您的代碼在商店實例上提交了非前綴的突變。

如果更改

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

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

你會得到你所期望的。

相關問題