gpt4 book ai didi

javascript - 使用其他组件中的按钮显示对话框

转载 作者:行者123 更新时间:2023-12-03 01:50:58 25 4
gpt4 key购买 nike

在我的 vue2 应用程序中,我有一个带有多个子组件的父组件。其中一个子组件(我将其称为 PaymentComponent)是一个用于捕获付款信息的简单对话框。

目前,应用程序中有几个位置可以显示付款对话框。但是,我无法理解如何使用其他子组件中的按钮在 PaymentComponent 中显示对话框。

下面是 PaymentComponent。有关如何使用共享相同父组件的另一个组件中的按钮显示对话框的任何提示?

<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>

最佳答案

So you want to open the modal from anywhere in the application.

一种解决方案是使用事件总线 ( see more here ),您可以在其中从每个组件发出一个事件并在模态组件中监听该事件。

另一个解决方案是使用 vuex( see more here ),您可以在其中切换(true, false) 存储上的属性并监听模式组件(必须是全局组件)以打开或关闭模式。

无论如何,我有与你类似的情况,并使用了一个很棒的库,它非常适合我,用它你可以:

1- 使用 this.$modal.show('name-of-modal') 打开模式

2- 使用 this.$modal.hide('name-of-modal') 隐藏模式

3- 除了模态之外,您还可以使用对话框和动态组件

了解更多read the docs

关于javascript - 使用其他组件中的按钮显示对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50416791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com