J'ai deux composants appelés formultes.vue et table.vue Je veux que les données soient transférées sur la table lorsque l'utilisateur remplit le formulaire et clique sur le bouton Soumettre. Je sais que j'ai commis une erreur dans le code. P>
J'ai très peu d'expérience dans Vue. P>
Aidez-moi s'il vous plaît. P>
Vous pouvez voir le code de ce lien: https://codesandbox.io/s/condescending-matsumoto-w7fui P >
3 Réponses :
Vous obtenez les valeurs de formulaire individuellement à partir de avoir votre Store code> et le rendant sur l'entrée
code>. Cela provoque le problème que vous ne pouvez pas ajouter des lignes à la table.
Store code> comme p>
import Vue from "vue";
import Vuex from "vuex";
Vue.use(Vuex);
export const store = new Vuex.Store({
state: {
formData: {
name: "",
category: "",
code: "",
price: ""
},
show: false,
fData: []
},
getters: {
fData: state => state.fData
},
mutations: {
updateFdata: (state, payload) => {
state.fData = [ ...state.fData, payload]
}
}
});
Merci, mais malheureusement, le problème n'est toujours pas résolu et que les données sont ajoutées à la table sans cliquer sur le bouton.
@hamidrun, j'ai édité votre code de code et ça marche bien. Pourriez-vous s'il vous plaît expliquer quel problème vous êtes confronté
@hamidrun s'il vous plaît trouver mon code mis à jour. Il ajoutera une nouvelle ligne sur chaque soumission du formulaire à la table
Voici le code de travail https://codeandbox.io/s/goofy-grass- C1YSG
Vous êtes sur le chemin droit, la plupart de votre code est correct, veuillez modifier votre formulaire.Vue comme ci-dessous pour envoyer des actions dans votre magasin. P>
<template> <div> <form action> <div class="form-group"> <label for="name">Ùا٠٠ØصÙÙ:</label> <input type="text" class="form-control" id="name" placeholder name="name" v-model="name"> </div> <div class="form-group"> <label for="grouping">دست٠بÙدÛ:</label> <input type="text" class="form-control" id="grouping" placeholder name="group" v-model="category"> </div> <div class="form-group"> <label class="code">کد Ù ØصÙÙ:</label> <input type="text" class="form-control" id="coding" placeholder name="code" v-model="code"> </div> <div class="form-group"> <label for="price">ÙÛ٠ت Ù ØصÙÙ</label> <input type="text" class="form-control" id="pricing" placeholder name="price" v-model="price"> </div> <button type="button" class="btn btn-success send" @click.prevent="addUser">ثبت اطÙاعات</button> </form> </div> </template> <script> export default { data(){ return { name: '', category: '', code: '', price: '', } }, methods: { addUser() { this.$store.dispatch('updateName', this.name) this.$store.dispatch('updateCategory', this.category) this.$store.dispatch('updateCode', this.code) this.$store.dispatch('updatePrice', this.price) }, } }; </script> <style scoped> </style>
Je vous remercie mais je veux une nouvelle ligne à ajouter à la table chaque fois que l'utilisateur remplit de nouvelles informations sur le formulaire et clique sur le bouton. Que dois-je faire exactement?
Voici un code de travail HTTPS: // Codesandbox. io / intégré / méchant-chatterjee-6susb? fontsize = 14 & hidenavigation = 1 & thème = Dark
Tout d'abord, vous devez utiliser des mutations pour modifier les valeurs d'état. Deuxièmement, vous pouvez utiliser la méthode code> data code> dans le stockage des valeurs de formulaire avant de les soumettre. p>
ive a modifié votre magasin comme celui-ci p> et dans votre forme, vous devez envoyer l'action enfin, vous devez obtenir l'état Tabledata code> et itérer les éléments de votre table ... P> AddUtiliser code> une fois que le formulaire est soumis ... p>
<template>
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>کد</th>
<th>ÙاÙ
Ù
ØصÙÙ</th>
<th>دستÙ</th>
<th>ÙÛÙ
ت</th>
<th>عÙ
ÙÛات</th>
</tr>
</thead>
<tbody>
<tr v-for="item in tableData" :key="item.name">
<td>{{ item.code }}</td>
<td>{{ item.name }}</td>
<td>{{ item.category }}</td>
<td>{{ item.price }}</td>
<td>
<button type="button" class="btn btn-primary mt">ÙÛراÛØ´</button>
<button type="button" class="btn btn-danger mt">ØØ°Ù</button>
</td>
</tr>
</tbody>
</table>
</div>
</template>
<script>
import { mapState } from "vuex";
export default {
computed: {
...mapState(["tableData"])
}
};
</script>
<style scoped>
</style>
Je vous remercie de voir votre code source mais aucune information n'est ajoutée à la table.
Il suffit de copier les codes ci-dessus et cela fonctionnera. Le Codepen n'est pas mis à jour, au lieu de Push code>, il suffit de le remplacer par
concat code>. Voir
Adduserer code> mutation. Voici le lien mis à jour codesandbox.io/embed/...