Ho un componente con una convalida del modulo. È un modulo di pagamento in più passaggi. Il codice seguente è per il primo passaggio. Vorrei convalidare che l'utente abbia inserito del testo, memorizzare il proprio nome nello stato globale e quindi inviarlo al passaggio successivo. Sto usando vee-validate e vuex
<template>
<div>
<div class='field'>
<label class='label' for='name'>Name</label>
<div class="control has-icons-right">
<input name="name" v-model="name" v-validate="'required|alpha'" :class="{'input': true, 'is-danger': errors.has('name') }" type="text" placeholder="First and Last">
<span class="icon is-small is-right" v-if="errors.has('name')">
<i class="fa fa-warning"></i>
</span>
</div>
<p class="help is-danger" v-show="errors.has('name')">{{ errors.first('name') }}</p>
</div>
<div class="field pull-right">
<button class="button is-medium is-primary" type="submit" @click.prevent="nextStep">Next Step</button>
</div>
</div>
</template>
<script>
export default {
methods: {
nextStep(){
var self = this;
// from baianat/vee-validate
this.$validator.validateAll().then((result) => {
if (result) {
this.$store.dispatch('addContactInfoForOrder', self);
this.$store.dispatch('goToNextStep');
return;
}
});
}
},
computed: {
name: function(){
return this.$store.state.name;
}
}
}
</script>
Ho un negozio per la gestione dello stato dell'ordine e la registrazione del nome. In definitiva, vorrei inviare tutte le informazioni dal modulo in più passaggi al server.
export default {
state: {
name: '',
},
mutations: {
UPDATE_ORDER_CONTACT(state, payload){
state.name = payload.name;
}
},
actions: {
addContactInfoForOrder({commit}, payload) {
commit('UPDATE_ORDER_CONTACT', payload);
}
}
}
Quando eseguo questo codice ottengo un errore that Computed property "name" was assigned to but it has no setter.
Come associo il valore dal campo del nome allo stato globale? Vorrei che fosse persistente in modo che anche se un utente torna indietro di un passaggio (dopo aver fatto clic su "Passaggio successivo") vedrà il nome che ha inserito in questo passaggio
v-for
su un computer calcolato senza un setter lanci anche questo avvertimento.