Поскольку вам необходимо дополнительное взаимодействие с пользователем, я полагаю, вам следует добавить атрибут данных, который позволит вам отслеживать шаг, на котором вы находитесь ...
Может быть, это поможет вам ...
new Vue({
el: '#app',
data() {
return {
step: 'init',
txdetails: {
cardnumber: '',
cvv: '',
expirymonth: '',
expiryyear: '',
amount: ''
},
transactionid: null,
otp: null
}
},
methods: {
updateView() {
console.log("Update View");
$("#app").hide();
},
onSubmit() {
switch(this.data.switch) {
case 'init':
this.submitInit();
break;
case 'otp':
this.submitOtp();
break;
}
},
submitInit() {
axios.post('/process', this.data.txdetails).then(response => {
if (response.data.code == 200) {
this.transactionid = response.data.transactionid;
this.step = 'otp';
}
}).catch(err => console.log(err))
},
submitOtp() {
axios.post('/process', {
PIN: this.otp,
transactionid: this.transactionid
})
.then(response => console.log("Sending PIN"))
.catch(err => console.log("Error Sending PIN: " + err));
}
});
затем вы можете использовать
<div v-if="step == 'init'">Show initial form here</div>
<div v-else>Show OTP form here</div>
для условного отображения начальной формы или формы OTP для запроса ввода пользователя и отправки его на сервер ...
Надеюсь, это имеет смысл - не просто скопируйте вставку, поскольку я не тестировал код - просто быстро изменил ваш ...