我们要实现如下图功能

小程序一个公共的弹出组件,首先我们创建一个pop文件

然后在生成的pop.json文件中将component定义为true

  1. {
  2. "component": true
  3. }

为pop.wxml添加内容

  1. <!--pages/common/pop/pop.wxml-->
  2. <view class='wx_dialog' hidden="{{!isShow}}">
  3. <view class='wx-mask'></view>
  4. <view class='wx-dialog-content'>
  5. <view class='wx-dialog-title'>{{ title }}</view>
  6. <view class='wx-dialog-contents'>{{ content }}</view>
  7. <view class='wx-dialog-footer'>
  8. <view class='wx-dialog-btn' catchtap='_cancelEvent'>{{ cancelText }}</view>
  9. <view class='wx-dialog-btn' catchtap='_confirmEvent'>{{ confirmText }}</view>
  10. </view>
  11. </view>
  12. </view>

pop.wxss

  1. /* pages/common/pop/pop.wxss */
  2. .wx_dialog {
  3. position: fixed;
  4. left: ;
  5. right: ;
  6. top: ;
  7. bottom: ;
  8. }
  9. .wx-mask {
  10. position: absolute;
  11. left: ;
  12. right: ;
  13. top: ;
  14. bottom: ;
  15. background: rgba(, , , .);
  16. z-index: ;
  17. }
  18. .wx-dialog-content {
  19. position: absolute;
  20. background: #fff;
  21. left: %;
  22. top: %;
  23. transform: translate(-%, -%);
  24. width: %;
  25. /* height: 200px; */
  26. padding-bottom: 60px;
  27. z-index: ;
  28. border-radius: 5px;
  29. }
  30. .wx-dialog-contents {
  31. padding: 10px;
  32. }
  33. .wx-dialog-title {
  34. padding: 5px 10px;
  35. font-size: 14px;
  36. }
  37. .wx-dialog-footer {
  38. position: absolute;
  39. left: ;
  40. right: ;
  41. bottom: ;
  42. font-size: 14px;
  43. height: 40px;
  44. line-height: 40px;
  45. border-top: 1px solid #eee;
  46. }
  47. .wx-dialog-btn {
  48. display: inline-block;
  49. width: %;
  50. cursor: pointer;
  51. text-align: center;
  52. }
  53. .wx-dialog-btn:first-child {
  54. border-right: 1px solid #eee;
  55. }

pop.js

  1. // pages/common/pop/pop.js
  2. Component({
  3. options: {
  4. multipleSlots: true // 在组件定义时的选项中启用多slot支持
  5. },
  6. /**
  7. * 组件的属性列表
  8. * 用于组件自定义设置
  9. */
  10. properties: {
  11. // 弹窗标题
  12. title: { // 属性名
  13. type: String, // 类型(必填),目前接受的类型包括:String, Number, Boolean, Object, Array, null(表示任意类型)
  14. value: '标题' // 属性初始值(可选),如果未指定则会根据类型选择一个
  15. },
  16. // 弹窗内容
  17. content: { type: String, value: '弹窗内容' },
  18. // 弹窗取消按钮文字
  19. cancelText: { type: String, value: '取消' },
  20. // 弹窗确认按钮文字
  21. confirmText: { type: String, value: '确定' }
  22. },
    /**
    * 私有数据,组件的初始数据
    * 可用于模版渲染
    */
  23. data: { // 弹窗显示控制
  24. isShow: false
  25. },
  26. /**
  27. * 组件的方法列表
  28. * 更新属性和数据的方法与更新页面数据的方法类似
  29. */
  30. methods: {
  31. /**
  32. * 公有方法
  33. */
  34. //隐藏弹框
  35. hideDialog() {
  36. this.setData({
  37. isShow: !this.data.isShow
  38. })
  39. },
  40. //展示弹框
  41. showDialog() {
  42. this.setData({
  43. isShow: !this.data.isShow
  44. })
  45. },
  46. /**
  47. * 内部私有方法建议以下划线开头
  48. * triggerEvent 用于触发事件
  49. */
  50. _cancelEvent() { //触发取消回调
  51. this.triggerEvent("cancelEvent")
  52. },
  53. _confirmEvent() { //触发成功回调
  54. this.triggerEvent("confirmEvent");
  55. }
  56. }
  57. })

在父级页面的.js文件中添加

  1. /**
  2. * 生命周期函数--监听页面初次渲染完成
  3. */
  4. onReady: function () {
  5. this.dialog = this.selectComponent("#dialog");
  6. },
  7. showDialog() {
  8. this.dialog.showDialog();
  9. },
  10. //取消事件
  11. _cancelEvent() {
  12. console.log('你点击了取消');
  13. this.dialog.hideDialog();
  14. },
  15. //确认事件
  16. _confirmEvent() {
  17. console.log('你点击了确定');
  18. this.dialog.hideDialog();
  19. },

父级页面的.json文件中添加

  1. {
      "usingComponents": {"pop": "../common/pop/pop"}
    }

在父级页面的.wxml文件中添加

  1. <view class="pop">
  2. <pop id='dialog' title='我是标题' content='恭喜你,学会了小程序组件' cancelText='知道了' confirm='谢谢你' bind:cancelEvent="_cancelEvent" bind:confirmEvent="_confirmEvent">
  3. </pop>
  4. </view>

然后就大功告成了

如果想注册到全局,则需要在app.json页面添加挂载:

  1. {
  2.   "usingComponents": {"pop": "../common/pop/pop"}
  3. }

  

微信小程序之公共组件写法的更多相关文章

  1. 微信小程序--页面与组件之间如何进行信息传递和函数调用

    微信小程序--页面与组件之间如何进行信息传递和函数调用 ​ 这篇文章我会以我自己开发经验从如下几个角度来讲解相关的内容 页面如何向组件传数据 组件如何向页面传数据 页面如何调用组件内的函数 组件如何调 ...

  2. 原创:WeZRender:微信小程序Canvas增强组件

    WeZRender是一个微信小程序Canvas增强组件,基于HTML5 Canvas类库ZRender. 使用 WXML: <canvas style="width: 375px; h ...

  3. 微信小程序之swiper组件高度自适应

    微信小程序之swiper组件高度自适应 要求: (顶部广告栏 ) 改变swiper组件的固定高度,使之随内部每张图片的高度做自适应 原理: 图片加载完之后,获取图片的原始宽高,根据宽高比,计算出适应后 ...

  4. 微信小程序中的组件使用1

    不管是vue还是react中,都在强调组件思想,同样,在微信小程序中也是使用组件思想来实现页面复用的,下面就简单介绍一下微信小程序中的组件思想. 组件定义与使用 要使用组件,首先需要有组件页面和使用组 ...

  5. 微信小程序基于swiper组件的tab切换

    代码地址如下:http://www.demodashi.com/demo/14010.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...

  6. 关于微信小程序前端Canvas组件教程

    关于微信小程序前端Canvas组件教程 微信小程序Canvas接口函数 ​ 上述为微信小程序Canvas的内部接口,通过熟练使用Canvas,即可画出较为美观的前端页面.下面是使用微信小程序画图的一些 ...

  7. uni-app开发微信小程序引入UI组件库(Vant-weapp)步骤

    uni-app开发微信小程序引入UI组件库(Vant-weapp)步骤 这里以vant-weapp为例 uni-app官方文档介绍引入组件的方法 1. 新建相关目录 根目录下创建 wxcomponen ...

  8. 微信小程序校历组件

    微信小程序校历组件 校历组件,可以作为校园小程序的插件,如果觉得不错,点个star吧

  9. 微信小程序内置组件web-view的缓存问题探讨

    前言:博客或者论坛上面,还有自习亲身经历,发现微信小程序的webview组件的页面缓存问题相当严重,对开发H5的小童鞋来说应该困扰了不少.很多小童鞋硬是抓破脑袋也没有办法解决这个问题,那我们今天就来探 ...

随机推荐

  1. 003Linux常用命令

    文件操作 01  命令 : list----列出目录信息 命令格式: ls [-选项] [目录] 选项 : -a --all 不忽略以"."开头的隐藏文件 : -d --direc ...

  2. 菜鸟学习Spring——SpringMVC注解版控制层重定向到控制层

    一.概述. SpringMVC中界面请求Contorller1,Contorller1需要重定向到Contorller2中显示其他页面或者做一些业务逻辑,Spring中提供了这个功能利用"r ...

  3. ezdpl Linux自动化部署实战

    最近把ezdpl在生产环境中实施了,再加上这段时间的一些修改,一并介绍一下. 再次申明: ezdpl不是开箱即用的,需要根据自己的应用环境定制.对初学者来说使用起来反倒困难更多.风险更大. 它不是一个 ...

  4. App后台开发架构实践笔记

    1 App后台入门 1.1 App后台的功能 (1)远程存储数据: (2)消息中转. 1.2 App后台架构 架构设计的流程 (1) 根据App的设计,梳理出App的业务流程: (2) 把每个业务流程 ...

  5. 定时备份SQL Server数据库

    一.手动备份: 1.整个数据库备份:选择数据库 => 右键任务 => 备份: 2.导出一张表的框架:选择表 => 编写表脚本为 => CREATE到: 3.导出一张表的数据:  ...

  6. MySQL中AddDate函数的疑惑

    无论使用哪一种RDBMS,都需要使用到其中的一些日期转换函数,在使用MySQL的AddDate函数时,遇到了点小问题,稍作记录. root@localhost:mysql3376.sock [(non ...

  7. 点触科技安全验证新模式与逐浪CMS3.9.3新功能预览

    是颠覆传统字符验证码的新一代验证码系统.用户通过点击.拖动等有趣方式即可完成验证,防止机器攻击, 应用在注册.登录.数据访问保护.黄牛刷单等场景. 只要在逐浪CMS后台-系统-配置 ,进行简单的配置, ...

  8. Linux文件与目录管理常用命令

    Linux文件与目录常用命令管理: 文件权限/目录权限: -rwxr-xr-x. root root Mar : zeng.txt r():可读 w():可写 x():可执行 drwxr-xr-x. ...

  9. WAKE-WIN10-SOFT-VS2013及工具

    1,下载安装,,,,,,, 2,配置 3opencv 3,1官网:http://opencv.org/ 3,3VS2013+OPENCV249配置 http://jingyan.baidu.com/a ...

  10. 查询python的安装路径

    参考链接: https://blog.csdn.net/orangleliu/article/details/44907221 (tf_14) novak@novak-ZBook15G2:~$ pyt ...