收藏
回答

vant weapp Dialog中组件调用beforeClose这个是这么用的?

这个正确的使用方式是什么。或者 有没有其他的方法可以让dialog关闭前校验

回答关注问题邀请回答
收藏

8 个回答

  • 星辰大海
    星辰大海
    2023-10-13

    <!-- 在van-dialog组件中的before-close属性使用要点: -->

    <!-- 1. before-close的参数必须是data中的一个函数; -->

    <!-- 2. 为了在参数函数中使用this,应在onLoad等中调用setData动态设置该函数的实现; -->

    <!-- 3. 不能再配置 bind:close="onDialogClose" bind:confirm="onDialogConfirm" 这两个bind事件了,否则会出现异常行为; -->

    原先通过bind:close和bind:confirm绑定的处理函数,一律都要在beforeClose中处理;

    2023-10-13
    有用 1
    回复
  • 浊澜
    浊澜
    2022-12-27

    组件调用,阻止点击确认按钮后关闭,resolve返回值搞不明白,反正就这么搞出来了,没有onLoad

    <!-- 拒绝弹窗 -->
      <van-dialog use-slot title="拒绝原因" show="{{ reject_model }}" show-cancel-button bind:confirm="submit_reject" bind:close="close_reject_model" bind:cancel="cancel_reject_model" before-close="{{beforeClose}}">
        <van-field model:value="{{reject_reason}}" placeholder="请填写拒绝原因" type="textarea" required="{{false}}" autosize />
    </van-dialog>
    

     

    /**
       * 点击拒绝
       */
      submit_reject() {
        let { detail, reject_reason } = this.data
        if (!reject_reason) {
          util.showToast('请填写拒绝原因')
          this.setData({
            beforeClose: (action) =>
              new Promise((resolve) => {
                if (action === 'confirm') {
                  resolve(false)
                } else if (action === 'cancel') {
                  resolve(false)
                }
              }),
          })
        } else {
          this.setData({
            beforeClose: (action) =>
              new Promise((resolve) => {
                if (action === 'confirm') {
                  resolve(true)
                } else if (action === 'cancel') {
                  resolve(false)
                }
              }),
          })
          const data = {
            examine: 3,
            reason: reject_reason,
            id: detail.id,
          }
          api
            .visitorAudit(data)
            .then(() => {
              util.showToast('已拒绝', 'success')
              setTimeout(() => {
                this.onShow()
              }, 500)
            })
            .catch((err) => {
              return util.showToast(err.data.msg)
            })
        }
      },
    
    2022-12-27
    有用 1
    回复
  • 毛毛
    毛毛
    2022-03-01

    可以参考这里:https://blog.csdn.net/zszcc/article/details/119669492

    2022-03-01
    有用 1
    回复
  • 给个眼神自己体会
    给个眼神自己体会
    2021-11-15

    亲测 组件模式,需要把beforeClose的方法写在 data中,然后写一个Promise,使用resolve返回 true false,

    官方居然官方居然没特别说明下,离谱


    2021-11-15
    有用 1
    回复 2
    • null&null
      null&null
      2022-01-24
      有实例吗?太特么坑了
      2022-01-24
      回复
    • Judy
      Judy
      2023-05-23
      写到data,可以调用到了,谢~
      2023-05-23
      回复
  • 裴培
    裴培
    2023-03-14

    1、wxml中

    <van-dialog id="scheduledia"

      use-slot

      title=""

      show="{{ show }}"

      show-cancel-button

      bind:confirm="onConfirm"

      before-close="{{onBeforeClose}}"

    >

    </van-dialog>

    2、js中

    Page({

      data: {

        onBeforeClose:(action)=>{

    if (action === "cancel"){

            return true;

          }

        }

      },

    })


    onConfirm设置show为false,即可关闭窗口,否则窗口不会关联

    2023-03-14
    有用
    回复
  • Curry
    Curry
    2021-08-30

    估计官方根本就没有写组件调用模式 阻止关闭的回调,真有你的 有赞

    2021-08-30
    有用
    回复
  • 一直在,
    一直在,
    2021-02-22

    老哥会用了吗 我还是不会使🤣

    2021-02-22
    有用
    回复 6
    • 一直在,
      一直在,
      2021-02-22
      😑  知道了,没有更新dist文件夹
      2021-02-22
      回复
    • AMmao
      AMmao
      2021-02-28回复一直在,
      老哥  组件内调用怎么写了呐 我一直beforeClose is not a function。。。。 没搞明白
      2021-02-28
      回复
    • AMmao
      AMmao
      2021-02-28
      加 bind:  没报错 但是没执行。。
      2021-02-28
      回复
    • 一直在,
      一直在,
      2021-03-01回复AMmao
      我是在页面内调用的,代码献上,获取你可以参考一下
      2021-03-01
      1
      回复
    • 一直在,
      一直在,
      2021-03-01回复一直在,
      然后是js代码,直接把官网的拿过来
      2021-03-01
      1
      回复
    查看更多(1)
  • 有赞
    有赞
    2021-02-01

    文档中有示例喔,参见 https://vant-contrib.gitee.io/vant-weapp/#/dialog#yi-bu-guan-bi

    2021-02-01
    有用
    回复 8
    • 奋斗
      奋斗
      2021-03-20
      我想知道这样用的话,怎么加beforeClose
      2021-03-20
      回复
    • 2021-05-27
      感觉微信小程序之类的产品设计的都是反人类
      2021-05-27
      回复
    • Jerry
      Jerry
      2021-07-20
      这么多人提这个问题,是不是考虑优化一下???
      2021-07-20
      回复
    • 丶灵感仰
      丶灵感仰
      2021-07-21
      这不是api调用么  你发个组件调用的啊  好坑的文档
      2021-07-21
      回复
    • null&null
      null&null
      2022-01-24
      用了这么久发现这个框架真特么反人类
      2022-01-24
      回复
    查看更多(3)
登录 后发表内容
问题标签