2017-02-17 4 views
1

Ich habe Probleme, meine Verpflichtung zu einem Geschäft zu arbeiten.vuex commit verpflichtet sich nicht, zu speichern

Ich rufe die Mutation über eine Aktion, die gut zu funktionieren scheint.

export const location = { 
    state: { 
    x: 0, 
    y: 0, 
    z: 0, 
    extent: [], 
    epsg: 'EPSG:3857' 
    }, 
    mutations: { 
    setLocation(state, payload) { 
     // mutate state 
     console.log("Commit"); 
     state.x = payload.x; 
     state.y = payload.y; 
     console.dir(state); //this does return the mutated state. 
    } 
    }, 
    actions: { 
    setLocation(context, payload) { 
     console.dir(payload); 
     context.commit('setLocation', payload); 
    } 
    }, 
    getters: { 
    mapLocation(state) { 
     return state 
    } 
    } 
} 

Die Aktion wird in meiner Komponente importiert:

methods: { 
    ...mapActions(['setLocation']), 

und rief dann:

var location = { 
     x: data[0], 
     y: data[1] 
    } 
    this.setLocation(location); 

Dies scheint alles zu funktionieren, aber wenn ich Vue Developer Tools überprüfen, die Vuex Der Grundzustand bleibt unverändert und ich habe eine aktive Mutation (setLocation). Ich kann auf "Commit All" klicken, um die funktionierende Mutation zu bestätigen.

In meiner Komponente verwende ich einen Beobachter auf der Getter mapLocation, die ausgelöst wird, wenn ich auf Commit All klicken.

Wie kann ich es zwingen, in den Laden zu verpflichten?

Danke

Antwort

2

Ok, das war eigentlich ein sehr einfaches Problem/Aufsicht.

Ich hatte nichts im DOM auf der berechneten Eigenschaft modelliert, die ich beobachtete, also wurde es nie aktualisiert.

Die Lösung besteht also einfach darin, v-model = "mapLocation" zu verwenden, um sicherzustellen, dass die Uhr ausgelöst wird.

Verwandte Themen