IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 微信小程序封装自定义组件-空白页带按钮 -> 正文阅读

[移动开发]微信小程序封装自定义组件-空白页带按钮

在项目中,经常会有接口数据返回空的情况,多个页面需要显示空数据状态,那么可以封装成自定义空白页组件:
页面效果如下:
图一:暂无数据图一
图二:带按钮
图二:带按钮
接下来就开始写组件代码啦
步骤如下:

1.在根目录下新建components文件夹
2.在components下新建一个blankPage文件夹,新建blankPage的wxml、wxss、json、js文件

blankPage.wxml:

/**empty-空白图片的链接,isShowExplain-是否显示文字,emptyExplain-文字,isShowBtn-是否显示按钮,btnType-bindtap则普通点击事件,其他为电话号码授权事件,emptyBtnText-按钮文字**/
<view class="empty-content">
  <view class="empty-box flex-colc">
    <view class="empty-img">
      <image src="{{emptyImg}}" mode="aspectFit"></image>
    </view>
    <view class="empty-ex" wx:if="{{isShowExplain}}">
      {{emptyExplain}}
    </view>
    <view class="empty-btnBox" wx:if="{{isShowBtn}}">
        <button class="btn btn-lg not-btn flex-row empty-btn" bindtap="clickEmptyBtn" wx:if="{{btnType=='bindtap'}}">{{emptyBtnText}}</button>
        <button class="btn btn-lg not-btn flex-row empty-btn" bindgetphonenumber="getPhoneNumber" open-type="getPhoneNumber" wx:else>{{emptyBtnText}}</button>
      </view>
  </view>
</view>

blankPage.wxss:

.flex-row{flex-direction: row;}
.flex-colc{display: flex;flex-direction: column;justify-content: center;align-items: center;}
.btn{background: #F14243;color: #333;border: none;border-radius: 8rpx;display: inline-block;vertical-align: middle;white-space: nowrap;cursor: pointer;position: relative;z-index: 1;-moz-osx-font-smoothing: grayscale;padding: 0rpx !important;margin: 0rpx !important;line-height: inherit;display: flex;justify-content: center;align-items: center;margin-left: 0rpx !important;margin-right: 0rpx !important;}
.btn-lg{width: 100%;height: 96rpx;line-height: 96rpx;color: #fff;}

.empty-content {
  width: 100%;
  height: auto;
}

image {
  width: 100%;
  height: 100%;
  display: block;
}

.empty-box {
  padding: 168rpx 0rpx 0rpx 0rpx;
  display: flex;
}

.empty-box .empty-img {
  width: 468rpx;
  height: 344rpx;
}

.empty-box .empty-ex {
  font-size: 24rpx;
  font-weight: 400;
  color: #C4C4C4;
  margin-top: 48rpx;
}
.empty-btnBox{margin-top:88rpx;}
.empty-btn{
  border-radius:40rpx;
  padding: 16rpx 116rpx !important;
  font-size: 34rpx;
  background: #3A71F4 !important;
  border-radius: 60rpx;
}

blankPage.json:

{
  "component": true,
  "usingComponents": {}
}

blankPage.js:

// components/blankPage/blankPage.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    //图片
    emptyImg: {
      type: String,
      value: 'https://oss-cn-shenzhen.aliyuncs.com/src.png',
    },
    //是否显示文字说明
    isShowExplain:{
      type:Boolean,
      value:true,
    },
    //文字说明
    emptyExplain: {
      type: String,
      value: '啊哦,暂无数据 ~',
    },
    //是否显示按钮
    isShowBtn:{
      type:Boolean,
      value:false,
    },
    //按钮文字
    emptyBtnText:{
      type:String,
      value:'立即登录',
    },
    //按钮类型
    btnType: {
      type: String,
      value: "bindtap"
    }

  },

  /**
   * 组件的初始数据
   */
  data: {

  },

  /**
   * 组件的方法列表
   */
  methods: {
    _onInit: function () {

    },
    clickEmptyBtn:function(){
      this.triggerEvent('clickEmptyBtn');
    },
    getPhoneNumber:function(e){
      this.triggerEvent('getPhoneNumber', e.detail);
    }
  },
  // 以下是旧式的定义方式,可以保持对 <2.2.3 版本基础库的兼容
  attached() {
    // 在组件实例进入页面节点树时执行
    // 在组件实例进入页面节点树时执行
    // this._onInit();
  },
  ready() {
    // console.log('进入ready外层节点=', this.data.date);
    this._onInit();
  },
  // 以下为新方法 >=2.2.3
  lifetimes: {
    attached() {
      // 在组件实例进入页面节点树时执行
      // this._onInit();
    },
    detached() {
      // 在组件实例被从页面节点树移除时执行
    },
    ready() {
      // console.log('进入ready节点=', this.data.date);
      this._onInit();
    }
  }
})

在页面引用:
wxml:

/**emptyImg-空白页图片,
isShowExplain-是否显示文字说明,
emptyExplain-文字说明,
isShowBtn-是否显示按钮
btnType-bindtap普通点击事件,其他为手机号授权,我这里设置是手机号授权,
bind:getPhoneNumber-接收按钮点击事件,getPhoneNumberInfo-接收点击事件名,
bind:getPhoneNumber为接收组件按钮点击事件,可自定义后面getPhoneNumberInfo事件名
*/
 <blankPage emptyImg="https://oss-cn-shenzhen.aliyuncs.com/src.png" isShowExplain="{{true}}" emptyExplain="未登录,请先授权登录" isShowBtn="{{true}}" btnType="login" bind:getPhoneNumber="getPhoneNumberInfo"></blankPage>

json:

{
  "usingComponents": {
    "blankPage":"/components/blankPage/blankPage"
  },
  "navigationBarTitleText": "登录"
}

js:

//用于接收按钮点击事件,要跟wxml中的getPhoneNumberInfo相同
getPhoneNumberInfo: function (e) {
//如为手机号码授权,接下来就使用微信手机号码API处理逻辑,普通事件可直接写代码处理逻辑
}
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-05-11 16:33:45  更:2022-05-11 16:35:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 2:00:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码