J'ai un applicated qui nécessite la mise à jour de deux champs qui dépendent les uns des autres pour leurs valeurs.Vue.js propriétés calculées circulaires
Par exemple:
<template>
<tr>
<td>{{total}}</td>
<td><input type="text" v-model="calculateEarnedPercentage" @change="updatedForecastPercentage"></td>
<td><input type="text" v-model="spent_dollar"></td>
</tr>
</template>
<script>
export default {
data() {
return {
total: 1000000,
spent_percentage: '',
spent_dollar: 20000,
}
},
methods: {
updatedForecastPercentage() {
this.vendor.regional_forecast_dollar = this.vendor.purchases/(this.vendor.regional_forecast_dollar/100)
}
},
computed: {
calculateEarnedPercentage() {
return (this.vendor.regional_forecast_dollar/this.vendor.purchases) * 100
}
}
}
</script>
Les deux valeurs "passées" dépendent d'une valeur "totale" statique. Je vais stocker le spend_dollar, et le pourcentage sera initialement dérivé de cela.
Maintenant, si l'utilisateur met à jour le pourcentage, j'ai besoin de la valeur monétaire pour mettre à jour. Si elles mettent à jour la valeur en dollars, j'ai besoin du pourcentage à mettre à jour.
A partir de maintenant, cela ne fonctionne évidemment pas. Des mises à jour circulaires sont en cours. Comment concevez-vous vos données pour permettre cette fonctionnalité dans Vue.js?
One est un véritable élément de données, l'autre est une écriture calculée. –
Si vous faites 'v-model =" propriété calculée "', alors pensez à définir un 'setter' pour cette propriété calculée (' set' prop). À l'intérieur de ce setter, vous pouvez appliquer une certaine logique à vos variables en fonction de la valeur résultante modifiée. Lisez à ce sujet: https://vuejs.org/v2/guide/computed.html#Computed-Setter – wostex
@wostex merci! Je n'étais pas au courant de la dynamique get/set. – Gurnzbot