В моем приложении vue2 у меня есть родительский компонент с несколькими дочерними компонентами.Одним из таких дочерних компонентов (я буду называть его PaymentComponent) является простой диалог для сбора информации о платеже.
В настоящее время в приложении есть пара мест, где имеет смысл отображать диалог оплаты.Однако у меня возникают проблемы с пониманием того, как отобразить диалоговое окно в PaymentComponent с помощью кнопок в других дочерних компонентах.
Ниже находится Компонент Payment.Любые советы о том, как я могу отобразить диалоговое окно, используя кнопку из другого компонента, который имеет тот же родительский компонент?
<template>
<v-dialog v-model="paymentDialog" max-width="500">
<card
class='stripe-card'
:class='{ complete }'
stripe='pk_test_xxxxxxxxxxxxxxxxxxxx'
:options='stripeOptions'
@change='complete = $event.complete'>
</card>
<v-spacer></v-spacer>
<v-btn color="green darken-1" flat="flat" @click.native="paymentDialog = false">Disagree</v-btn>
<v-btn color="green darken-1" flat="flat" class="pay-with-stripe" @click='pay' :disabled='!complete'>Agree</v-btn>
</v-dialog>
</template>
<script>
// import { stripeKey, stripeOptions } from './stripeConfig.json'
import { Card, createToken } from 'vue-stripe-elements-plus'
export default {
name: 'stripe-payment',
data () {
return {
complete: false,
stripeOptions: {
// see https://stripe.com/docs/stripe.js#element-options for details
},
stripeKey: '',
paymentDialog: false
}
},
components: { Card },
methods: {
pay () {
// createToken returns a Promise which resolves in a result object with
// either a token or an error key.
// See https://stripe.com/docs/api#tokens for the token object.
// See https://stripe.com/docs/api#errors for the error object.
// More general https://stripe.com/docs/stripe.js#stripe-create-token.
createToken().then(data => console.log(data.token))
}
}
}
</script>