使用van-dialog二次封装微信小程序模态框

这篇具有很好参考价值的文章主要介绍了使用van-dialog二次封装微信小程序模态框。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

由于微信小程序的wx.showModal不支持富文本内容,无法实现更灵活的展示效果,故需要进行二次封装

实现思路:使用van-dialog以及微信小程序的rich-text实现

代码如下:

// index.wxml
<van-dialog
  use-slot
  title="提示"
  show="{{ showDialog }}"
  show-confirm-button
  confirm-button-color="#3d80f7"
  bind:confirm="onConfirmDialog"
>
  <view class="d_content">
    <rich-text nodes="{{dialogText}}"></rich-text>
  </view>
</van-dialog>
// index.js
Page({
data: {
    showDialog: false,
    dialogText: "",
    confirmCallback: null,
  },
  onCloseDialog() {
    this.setData({ showDialog: false }, () => {
      wx.showTabBar({
        animation: true,
      });
      setTimeout(() => {
        this.setData({
          dialogText: "",
          confirmCallback: null,
        });
      }, 300);
    });
  },
  onShowDialog(type, msg, rMsg, fn) {
    switch (type) {
      case "model":
        this.setData(
          {
            showDialog: true,
            dialogText: `<p  style="text-align: justify;"><span style="color: rgba(0, 0, 0, 0.5);">${msg}</span></p>`,
            confirmCallback: fn ? fn : null,
          },
          () => {
            wx.hideTabBar({
              animation: true,
            });
          }
        );
        break;
      case "reject":
        let mArray = msg.split(rMsg);
        let text = `
          <p style="text-align: left;text-align: justify;"><span style="color: rgb(140, 140, 140);">${mArray[0]}</span><span style="color: #ff5858;">${rMsg}</span><span style="color: rgb(140, 140, 140);">${mArray[1]}</span></p>
        `;
        this.setData(
          {
            showDialog: true,
            dialogText: text,
            confirmCallback: fn ? fn : null,
          },
          () => {
            wx.hideTabBar({
              animation: true,
            });
          }
        );
        break;
      case "custom":
        this.setData(
          {
            showDialog: true,
            dialogText: msg,
            confirmCallback: fn ? fn : null,
          },
          () => {
            wx.hideTabBar({
              animation: true,
            });
          }
        );
        break;
      default:
        this.setData(
          {
            showDialog: true,
            dialogText: msg,
            confirmCallback: fn ? fn : null,
          },
          () => {
            wx.hideTabBar({
              animation: true,
            });
          }
        );
        break;
    }
  },
  onConfirmDialog() {
    wx.showTabBar({
      animation: true,
    });
    this.onCloseDialog();

    if (typeof this.data.confirmCallback === "function") {
      this.data.confirmCallback();
    }
  },
})
// index.json
{
  "usingComponents": {
    "van-dialog": "@vant/weapp/dialog/index"
  }
}
// index.wxss
.d_content {
  box-sizing: border-box;
  padding: 36rpx 46rpx;
}

使用方法

this.onShowDialog("model",`您已向:${subItem.name}申请权限,请等待管理员审核。`);
this.onShowDialog(
              "reject",
              `您的申请被拒绝,原因为:${subItem.reason},请根据拒绝原因检查您的提交信息,点击确认继续。`,
              subItem.reason,
              () => {
                // ...
              }
            );

本文仅提供一种思路,可能不是最优写法,欢迎大家讨论留言文章来源地址https://www.toymoban.com/news/detail-730142.html

到了这里,关于使用van-dialog二次封装微信小程序模态框的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序使用van-steps详解

    vant官网代码如下 问题1:官网代码用在小程序上无效果 这里发现小程序的vant包里有 steps 没有step 因此官网写法无效。 解决方法 正确写法如下所示 页面wxml js 最终效果 问题2:steps数组中如何设置其他字段 (1)找到vant的包 (2)找到steps的index.wxml文件 (3)下面红框里是ste

    2024年02月16日
    浏览(28)
  • 完美解决微信小程序使用复选框van-checkbox无法选中

    由于小程序使用了vant-ui框架,导致checkbox点击无法选中问题   记得定义 checked 默认值   解决办法 : 添加onChange事件,给 checked 做赋值操作。 可以打印看看console.log(e) 选中效果: 取消选中效果:    

    2024年02月12日
    浏览(60)
  • 解决微信小程序使用van-search组件出现[Component] slot ““ is not found警告

    解决办法: 打开miniprogram_npm/@vant/weapp/field/index.wxml, 添加一个name=\\\"\\\"的solt. 然后重新点击编译,警告消失。

    2024年02月05日
    浏览(49)
  • 微信小程序 使用 vant-weapp 组件 van-field 类型为 textarea 在IOS端出现的问题记录

    在 IOS 端 出现 textarea 的 value 出现在最顶层, 上下滚动就消失, 此bug容易引起观感不适 出现该bug的原因 可能 是官方的原生组件的使用限制 微信小程序原生组件的使用限制 提供一个 showKey 布尔值去做限制, wx:if 为 false 时使用 text/text , 为 true 时使用回 van-field type=\\\"textarea\\\"/van-fi

    2024年02月13日
    浏览(45)
  • 【微信小程序】van-uploader实现文件上传

    使用van-uploader和wx.uploadFile实现文件上传,后端使用ThinkPHP。 1、前端代码 json:引入van-uploader wxml:deletedFile是删除文件函数,设置deletable=“{{ true }}” 和在数据中 deletable: true图片右上角会显示删除按钮,在点击删除图标时调用deletedFile函数去处理删除逻辑。beforeRead:是读之前

    2024年02月14日
    浏览(36)
  • 微信小程序整合vantweapp van-field遇到的坑?

    最低基础库版本在 2.9.3 以上时,可以使用简易双向绑定。 但是在双向绑定的时候,发现有一个层级关系 在用户添加地址,和van-popup、van-area结合使用的时候,点击输入框,弹出选择地址的框,此时发现用户仍然可以输入,我就想到了禁用,但是发现禁用会置灰,给用户一种

    2024年02月11日
    浏览(44)
  • uniapp 微信小程序axios库的封装及使用

    第一步:安装axios及适配器 安装依赖 需要注意使用uniapp-vue3版本时axios的版本需要0.26.0以下,建议锁版本   axios-miniprogram-adapter 这个依赖主要是适配小程序网络请求的适配器,为了解决uniapp 适配axios请求,避免报adapter is not a function错误 第二步:axios二次封装 在utils文件下新建

    2024年02月11日
    浏览(36)
  • vue2.x 二次封装element ui 中的el-dialog

    在做后台管理系统的时候,dialog组件是我们使用频率比较高的组件,但是有一些需求现有的组件是不满足的。因此会需要我们做二次封装。 组件本身的属性我们保留,只需要根据需求添加,然后在使用的时候props去拿取使用就可以了。 本次遇到的问题是如何在父组件去控制

    2024年02月07日
    浏览(42)
  • 微信小程序——van-field中的left-icon属性自定义

    ✅作者简介:2022年 博客新星 第八 。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:微信小程序学习分享 ✨特色专栏:国学周更-心性养成之路 🥭本文内容:微信小程序——

    2024年02月11日
    浏览(31)
  • 微信小程序--下拉选择框组件封装,可CV直接使用

            接到的项目需求,查看ui设计图后,由于微信小程序官方设计的下拉选择框不符合需求,而且常用的第三方库也没有封装类似的,所以选择自己自定义组件。在此记录一下,方便日后复用。         ui设计图如下:                   微信官方提供的选择框         对比发现

    2024年02月05日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包