У меня проблемы с выяснением, почему мой метод записывает шаг перед фактическим.Поэтому, если я выберу 1 в поле, а затем 2, я ничего не выведу, а затем 1.
Вот мой код:
<b-form-select @input="setCadeauOrReduction(vGiftCard)" @change="calculateNet(vGiftCard)" v-if="this.cadeauOrReduction != 'reduction'" v-model="vGiftCard" id="bonCadeauSoin">
<option></option>
<option v-for="boncadeau in boncadeaus" :key="boncadeau.id" v-bind:value="boncadeau.id">
<p>N° </p>
{{boncadeau.serialNumberProduct}}
<p>|</p>
{{boncadeau.amountOfCard}}
<p>CHF</p>
</option>
</b-form-select>
Это в основном вызывает функцию @change.Это дает мне идентификатор подарочной карты в качестве параметра.Затем вызываемая им функция:
fetchOneBonCadeau(idToFetch)
{
axios.get('/bonCadeaus/' + idToFetch)
.then((res) => {
this.bonCadeauPourAxios = res.data
})
.catch((err) => {
console.log(err);
})
return this.bonCadeauPourAxios;
},
//Calculer montant net
calculateNet(value)
{
console.log(this.fetchOneBonCadeau(value));
if(this.vReasonReduction)
{
this.vCostNet = this.vCostBrut - this.vCostBrut * this.vReasonReduction.reductionAmount;
}
else
{
this.vCostNet = this.vCostBrut;
}
}
Часть console.log всегда отстает на один шаг.Я не могу понять, почему.Это мой контроллер, если необходимо:
public function show($id)
{
$bonCadeau = BonCadeau::where('id', $id)->first();
return $bonCadeau;
}
Редактировать: нормальный код с использованием свойства привязки vModel
fetchOneBonCadeau(idToFetch)
{
axios.get('/bonCadeaus/' + idToFetch)
.then((res) => {
this.bonCadeauPourAxios = res.data
})
.catch((err) => {
console.log(err);
})
},
//Calculer montant net
calculateNet(value)
{
this.fetchOneBonCadeau(value);
console.log(this.bonCadeauPourAxios); //Is one step behind, first value is empty
if(this.vReasonReduction)
{
this.vCostNet = this.vCostBrut - this.vCostBrut * this.vReasonReduction.reductionAmount;
}
else
{
this.vCostNet = this.vCostBrut;
}
}
Мне кажется, vGiftCard обновляется после вызова функции "CalculateNet"