【Dialog】elementul Dialog组件点击空白处不关闭,点击空白处执行方法,点击关闭按钮执行方法

问题:

有时候我们可能需要把dialog组件用来封装成一个组件,引入到我们的另一个父组件内,这样我们就需要传值了,而点击空白处点击关闭叉叉之类的他默认的都是直接改变dialogVisible的值为false。但是,因为是组件引入了,所以直接改变值会报错,需要用$emit去改父组件的变量为false才行。这里就用到提供的一个关闭前的方法了。

点击空白处不关闭

核心语句::close-on-click-modal=“false”
这句话意思就是是否可以点击空白处关闭,false为不关闭

    <el-dialog
      title="选择题"
      :visible.sync="dialogVisible"
      :modal="false"
      top="3vh"
      width="600px"
      :close-on-click-modal="false"
    >

点击空白处执行方法,点击关闭按钮执行方法

核心语句::before-close=“Cancel”
这句话代表关闭前执行的方法

因为点击空白处和点击关闭的叉叉按钮,都是会触发关闭的方法,所以我们直接在关闭前方法内写你需要执行的代码就可以了。

这里注意如果是组件传值的,你不能用关闭方法,elementul的dialog组件提供了一个close的关闭回调,这个你写了是会执行方法,但是还是会报错。报错原因就是因为你先点击触发了不允许直接改变子组件的变量的报错,然后再执行的关闭方法触发父组件的方法把变量改成为false然后弹框关闭了,这样效果确实是关闭成功了,但是会一直报错,可能会出现其他问题,所以不建议用这个方法,要用关闭前的。这样不会有报错。

    <el-dialog
      title="选择题"
      :visible.sync="dialogVisible"
      :modal="false"
      top="3vh"
      width="600px"
      :before-close="Cancel"
    >
    Cancel(){
      this.$emit('CancelDialog',false)
    },
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Android或iOS等平台的用户界面设计中,当用户点击对话框中的某个区域时,通常需要处理点击监听事件。这种监听通常涉及到以下几个步骤: 1. **设置监听器**:在相应的View(如按钮、文本框或自定义布局)上设置OnClickListener或类似类型的事件处理器,这可以是Java或Kotlin的匿名内部类,也可以是一个实现了OnClickListener接口的类。 ```java button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 当按钮点击执行的代码 Toast.makeText(context, "Button clicked!", Toast.LENGTH_SHORT).show(); } }); ``` 2. **重写方法**:如果是在继承自View或其子类的自定义控件中,可能需要重写`onTouchEvent()`方法来处理点击事件,因为`onClick()`只在点击视图的焦点区域有效。 ```kotlin class CustomDialog : DialogFragment() { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { val view = inflater.inflate(R.layout.custom_dialog, container, false) view.findViewById<Button>(R.id.button_id).setOnClickListener { // 点击事件处理 } return view } } ``` 3. **事件处理**:在`onClick()`或`onTouchEvent()`的回调里,你可以获取到用户点击的具体位置,执行相应的操作,比如更新UI、显示信息、导航等。 ```java @Override public void onClick(View v) { int position = (int) v.getId(); // 获取点击的View ID switch (position) { case R.id.button1: // 处理第一个按钮点击 break; case R.id.button2: // 处理第二个按钮点击 break; // ... } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

接口写好了吗

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

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

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

打赏作者

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

抵扣说明:

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

余额充值