• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > uni-app中怎么开发一个全局弹层组件(代码示例)

uni-app中怎么开发一个全局弹层组件(代码示例)

作者:站长图库 字体:[增加 减小] 来源:互联网

站长图库向大家介绍了uni-app,全局弹层组件,代码示例等相关知识,希望对您有所帮助

uni-app中怎么开发一个全局弹层组件?下面本篇文章给大家通过例子介绍一下uni-app中实现一个全局弹层组件的方法,希望对大家有所帮助!


uni-app中怎么开发一个全局弹层组件(代码示例)


公司有一个采用uni-app框架写的app应用,里面的弹层基本是使用官方的uni.showModal之类的api实现弹层,在设备上表现就是原生的弹层,在客户的要求下,需要更换成设计的样式,所以就开始实现这样一个组件。

根据弹层经常使用的方法和方式可以大致列出他需要的属性和方法:

类型:alert/confirm等

展示图标 icon

展示内容 content

可以api调用

支持promise,可以使用$api.xx().then

前几项就很好做,就在data中定义好字段,外层直接拿官方的轮子uni-popup,这样少写一些控制弹出的逻辑(懒的),这样大致结构就写好了

// template部分<uni-popup ref="popup" :maskClick="maskClick">    <view class="st-layer" :style="{ width: width }">        <view class="st-layer__content">            <!-- #ifndef APP-NVUE -->            <text class="st-layer__icon" :class="option.iconClass || getIconClass()"                v-if="option.type !== 'none' && option.showIcon"></text>            <!-- #endif -->            <view class="st-layer__msg" v-if="option.msg">                <text>{{ option.msg }}</text>            </view>        </view>        <view class="st-layer__footer" :class="{'is-reverse-cofirmcancel' : isReverseConfirmCancel}" v-if="option.showConfirmButton || option.showCancelButton">            <view class="st-layer__footer__btn st-layer__footer__btn--confirm" @tap.stop="confirmClick"                v-if="option.showConfirmButton"><text>确认</text></view>            <view class="st-layer__footer__btn st-layer__footer__btn--cancel" @tap.stop="cancelClick"                v-if="option.showCancelButton"><text>取消</text></view>        </view>    </view></uni-popup>

然后js部分先简单实现了一些open和close方法

data() {    return {            option: {}    }},methods: {    open(option) {        let defaultOption = {                showCancelButton: false, // 是否显示取消按钮                cancelButtonText: '取消', // 取消按钮文字                showConfirmButton: true, // 是否显示确认按钮                confirmButtonText: '取消', // 确认按钮文字                showIcon: true, // 是否显示图标                iconClass: null, // 图标class自定义                type: 'none', // 类型                confirm: null, // 点击确认后的逻辑                cancel: null, // 点击取消后的逻辑                msg: ''        }        this.option = Object.assign({}, defaultOption, option)        this.$refs.popup.open()    },    close() {            this.$refs.popup.close()    },    confirmClick() {            const confirmHandler = this.option.confirm            if (confirmHandler && typeof confirmHandler === 'function') {                    confirmHandler()            }            this.close()            this.$emit('confirm')    },    cancelClick() {            const cancelHandler = this.option.cancel            if (cancelHandler && typeof cancelHandler === 'function') {                    cancelHandler()            }            this.close()            this.$emit('cancel')    }}

目前在其他页面已经可以使用

// test.vue  可以使用uni-app的 [easycom组件规范](https://uniapp.dcloud.io/component/README?id=easycom%e7%bb%84%e4%bb%b6%e8%a7%84%e8%8c%83),不用写import语句<st-layer ref="stLayer"></st-layer>
// js部分this.$refs.stLayer.open({    msg: '测试',    confirm: () => {  
  


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 如何快速搭建uni-app项目?两种搭建方法分享
  • 移动uni-app项目怎么实现发送位置的地图交互
  • uni-app中怎么开发一个全局弹层组件(代码示例)
  • 遇到的uni-app的坑(uni-easyinput清空值,datetimerange置空)
  • uni-app介绍全局样式引入和底部导航栏开发
  • 解决uni-app入坑集合的一种方案
  • 聊聊怎么将小程序项目转为uni-app项目
  • 浅析uni-app中怎么提交form表单?(代码解析)
  • 一起分析uni-app怎么实现上传图片
  • 看看使用uni-app如何编写一个五子棋小游戏

相关文章

  • dedecms织梦图集上传图片自动获取图片名做注释
  • 设计师应该从四个方面优化网站
  • 深入浅析vue3+vite中怎么使用svg图标
  • 织梦DedeCMS系统列表页调用TAG标签并带上链接的实
  • Photoshop设计书法人像前后期创作分享
  • 详解thinkPHP5模型中的修改器和自动完成
  • PHPCMS系统mysql优化教程
  • Photoshop制作立体效果的金色艺术字
  • ThinkPHP框架实现的邮箱激活功能示例
  • uniapp如何取消原生导航栏

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • 免费DedeCMS版QQ登陆插件FOR V5.5 V5.6 V5.7
    • 怎么为WordPress小工具添加CSS类选项
    • WordPress纯代码生成文章海报图片实现分享功能
    • WordPress通过加密隐藏wp-login/admin后台默认登录地址
    • PS制作质感的立体字
    • dplayer播放器整合苹果CMSV10方法
    • Mysql如何查询navicat中的blob类型内容
    • Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
    • CentOS8怎么安装最新版Nginx
    • CorelDraw交互式调和工具制作卡通彩虹

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有