15、BaseDialog的代码

BaseDialog的代码较多,不全贴了,看几个点。

重载了众多 getDialog函数以灵活地创建对话框,最终调用:
public static BaseDialog getDialog(Context context, CharSequence title,
CharSequence message, CharSequence button1,
DialogInterface.OnClickListener listener1, CharSequence button2,
DialogInterface.OnClickListener listener2, CharSequence button3,
DialogInterface.OnClickListener listener3) {
mBaseDialog = new BaseDialog(context);
if (mBaseDialog.titleAndMessageIsExist(title, message)) {
mBaseDialog.setTitle(title);
mBaseDialog.setMessage(message);
}
if (mBaseDialog.buttonIsExist(button1, listener1, button2, listener2,
button3, listener3)) {
mBaseDialog.setButton1(button1, listener1);
mBaseDialog.setButton2(button2, listener2);
mBaseDialog.setButton3(button3, listener3);
}
mBaseDialog.setCancelable(true);
mBaseDialog.setCanceledOnTouchOutside(true);
return mBaseDialog;
}
主要是设置对话框的标题和内容,设置三个按钮的文本以及点击事件处理函数。 setButton1会判断如果对应的按钮文本和点击事件函数为空,就隐藏该按钮,在上一节的《 BaseDialog的界面 》里看到三个按钮的 layout_weight 属性均为1,如果有一个隐藏的话,其他两个按钮会平分布局的,所以界面显示上不会有问题。

按钮点击事件也由外面设置,谁使用谁设置,也是比较灵活的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,对于页面中有多个dialog弹框的情况,我们可以通过继承或组合等方式,将相似的弹框进行抽象和重用。具体来说,我们可以定义一个基础的弹框组件,然后在其基础上进行扩展和定制,以满足不同的需求。 下面是一个基础的弹框组件的代码示例: ``` <template> <el-dialog :visible.sync="visible" :title="title" :width="width"> <slot></slot> </el-dialog> </template> <script> export default { props: { visible: { type: Boolean, default: false }, title: { type: String, default: '' }, width: { type: String, default: '50%' } } } </script> ``` 在这个基础组件中,我们定义了三个 props:visible、title 和 width,分别表示弹框是否可见、弹框的标题和弹框的宽度。同时,我们使用了一个 slot,用于插入弹框的内容。 接下来,我们可以在这个基础组件的基础上进行扩展和定制。比如,如果我们需要一个带有确认和取消按钮的弹框,可以定义一个新的组件,继承基础组件,并添加相应的按钮和事件处理逻辑,如下所示: ``` <template> <base-dialog :visible.sync="visible" :title="title" :width="width"> <div slot="footer"> <el-button @click="handleCancel">取消</el-button> <el-button type="primary" @click="handleConfirm">确认</el-button> </div> <slot></slot> </base-dialog> </template> <script> import BaseDialog from './BaseDialog.vue' export default { components: { BaseDialog }, props: { visible: { type: Boolean, default: false }, title: { type: String, default: '' }, width: { type: String, default: '50%' } }, methods: { handleCancel() { this.$emit('cancel') }, handleConfirm() { this.$emit('confirm') } } } </script> ``` 在这个新的组件中,我们首先引入了基础组件 BaseDialog,并将其注册为当前组件的子组件。然后,我们在模板中使用了 BaseDialog 组件,并在其内部添加了两个按钮,分别用于取消和确认操作。同时,我们还定义了两个方法,分别用于处理取消和确认事件,并通过 $emit 方法将事件传递给父组件。 通过这种方式,我们可以轻松地实现弹框的抽象和重用,同时也可以根据具体的需求进行定制和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

asmcvc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值