2016-08-27 1 views
5

Ich versuche, eine wirklich kleine Vue App mit einer Rails API zu bauen. Im Moment arbeite ich mit Vue, Vue-Resource und Vuex. Ich hole alle Benutzer aus der Datenbank und versuche nun eines von ihnen zu aktualisieren. Alles funktioniert gut (Benutzer patch), aber nach dem Ausführen der updateUser-Aktion möchte ich die Aktion fetchUsers erneut ausführen, um den Vuex-Speicher zu aktualisieren.So rufen Sie Aktion in Aktion in Vuex

Aber wenn die fetchUsers läuft innerhalb des Updateuser Versprechen, das ich die folgende Fehlermeldung erhalten:

undefined:1 Uncaught (in promise) TypeError: Cannot read property 'dispatch' of undefined 

das ist, was meine vuex/actions.js suchen:

export const fetchUsers = function ({ dispatch, state }) { 
    this.$http.get('http://localhost:3000/api/v1/users').then((response) => { 
    dispatch('SET_USERS', response.data) 
    }, (response) => { 
    dispatch('SET_USERS', []) 
    console.log(response) 
    }) 
} 

export const updateUser = function ({ dispatch, state }, user) { 
    this.$http.patch('http://localhost:3000/api/v1/users/' + user.id, {user: user}).then((response) => { 
    fetchUsers() 
    }, (response) => { 
    console.log(response) 
    }) 
} 

ich jetzt, dass die fetchUsers Aktion verliert irgendwie den Kontext (?), aber ich weiß nicht, wie ich damit umgehen soll! Danke für jede Hilfe!

Antwort

9

das ist, wie ich es bekam ist :)

import Vue from 'vue' 

export const fetchUsers = ({ dispatch, state }) => { 
    Vue.http.get('http://localhost:3000/api/v1/users').then((response) => { 
    dispatch('SET_USERS', response.data) 
    }, (response) => { 
    dispatch('SET_USERS', []) 
    console.log(response) 
    }) 
} 

export const updateUser = ({ dispatch, state }, user) => { 
    Vue.http.patch('http://localhost:3000/api/v1/users/' + user.id, {user: user}).then((response) => { 
    fetchUsers({dispatch}) 
    }, (response) => { 
    dispatch('SET_USERS', []) 
    console.log(response) 
    }) 
} 
+0

i haben die gleiche Struktur zu arbeiten, im immer fetchUsers nicht definiert. –

Verwandte Themen