Je calcule le coût estimé. Sélectionner un produit récupère les détails du produit et affiche sa description et son prix dans la zone de saisie. Et puis en cliquant sur le bouton ajouter une nouvelle ligne apparaîtra pour une autre sélection. Mais le problème est que la nouvelle ligne apparaît avec les anciennes données de ligne. Et changer une seule ligne affecte toutes les autres lignes. Voici mon code jusqu'à présent:Sélection d'une seule ligne Sélection de toutes les autres lignes dans Vue.js
<tbody v-for="row in rows" :key="index">
<tr>
<td>
<select @change="selected" v-model="product_id" class="form-control" name="product_id" id="product_id">
<option value="">Select Product</option>
<option v-for="item in items" :value="item.id" v-text="item.product_name"></option>
</select>
</td>
<td>
<textarea type="text" v-model="product.product_details" name="product_details" id="product_details" class="form-control" rows="1" placeholder="Product Details">
</textarea>
</td>
<td>
<input v-model.number="product.product_sellPrice" type="number" step="any" class="form-control" name="rate" id="rate" placeholder="Rate">
</td>
<td>
<input v-model.number="product.product_tax" type="number" step="any" class="form-control" name="tax" id="tax" placeholder="Tax">
</td>
<td>
<input v-model="quantity" type="number" class="form-control" name="quantity" id="quantity" placeholder="Quantity">
</td>
<td>
<input :value="total" type="number" step="any" class="form-control" name="total" id="total" placeholder="Total Price">
</td>
<td>
<button class="btn btn-secondary" v-on:click="addrow" >
<i class="fa fa-plus" aria-hidden="true"></i>
</button>
<button v-show="length > 1" class="btn btn-secondary" @click.prevent="removerow(index)">
<i class="fa fa-minus" aria-hidden="true"></i>
</button>
</td>
</tr>
</tbody>
<script>
export default{
props: ['products'],
data() {
return {
rows: [{
}],
items: this.products,
product: '',
product_id: '',
quantity: '',
index: '',
total_price: '',
}
},
methods: {
addrow: function (event) {
event.preventDefault();
this.rows.push({
});
},
removerow: function (index) {
this.rows.splice(index, 1);
},
selected(e){
var id = this.product_id;
console.log(id);
axios.get('/estimate/product/' + id)
.then((response)=>{
this.product = '';
this.product = response.data;
})
.catch((error) => {
console.log(error);
});
},
}
}
</script>
Où est-ce que je fais mal? Comment puis-je le résoudre? Merci.
C'est une seule partie de mon projet. Mais je pense qu'il n'a pas d'autre connexion sans aller chercher les données de la base de données avec le projet. Voici mon code complet pour cette partie et je pense que je me trompe dans la sélection des lignes –
Obtenir le code de fonctionnement de travail dans jsfiddle.net et de poster ici, il sera plus facile de vous aider .. Comment créer un minimum, complet et vérifiable exemple: https://stackoverflow.com/help/mcve – StefanE
Cela ne fonctionnera pas dans JSFiddle. Mais j'ai rendu le code plus court. –