发表于: 2019-12-30 22:56:09

0 1008


今天完成的事情:

改合并代码BUG
明天计划的事情:

 演示的BUG修改
遇到的问题:


收获:

通用弹窗组件

hidden

 这个属性和IF属性差不多一样只是这个属性只是用来控制显示和隐藏的如果你只是想让你的一个盒子进点击显示或者隐藏那么就比用IF好。

<view class="wx-popup" hidden="{{flag}}">
 <view class='popup-container'>
   <view class="wx-popup-title">{{title}}</view>
   <view class="wx-popup-con">{{content}}</view>
   <view class="wx-popup-btn">
     <text class="btn-no" bindtap='_error'>{{btn_no}}</text>
     <text class="btn-ok" bindtap='_success'>{{btn_ok}}</text>
   </view>
 </view>
</view>


.wx-popup {
 position: absolute;
 left: 0;
 top: 0;
 width: 100%;
 height: 100%;
 background: rgba(0, 0, 0, .5);
}
.popup-container {
 position: absolute;
 left: 50%;
 top: 50%;

 width: 80%;
 max-width: 600rpx;
 border: 2rpx solid #ccc;
 border-radius: 10rpx;
 box-sizing: bordre-box;
 transform: translate(-50%, -50%);
 overflow: hidden;
 background: #fff;
}
.wx-popup-title {
 width: 100%;
 padding: 20rpx;
 text-align: center;
 font-size: 40rpx;
 border-bottom: 2rpx solid red;
}
.wx-popup-con {
 margin: 60rpx 10rpx;
 text-align: center;
}
.wx-popup-btn {
 display: flex;
 justify-content: space-around;
 margin-bottom: 40rpx;
}
.wx-popup-btn text {
 display: flex;
 align-items: center;
 justify-content: center;
 width: 30%;
 height: 88rpx;
 border:   2rpx solid #ccc;
 border-radius: 88rpx;
}

先写一个简单的弹窗小样式.

Component({
 /**
  * 组件的属性列表
  */
 properties: {
   title: {            // 属性名
     type: String,     // 类型(必填),目前接受的类型包括:String, Number, Boolean, Object, Array, null(表示任意类型)
     value: '标题'     // 属性初始值(可选),如果未指定则会根据类型选择一个
   },
   // 弹窗内容
   content: {
     type: String,
     value: '请先登陆账户'
   },
   // 弹窗取消按钮文字
   btn_no: {
     type: String,
     value: '取消'
   },
   // 弹窗确认按钮文字
   btn_ok: {
     type: String,
     value: '确定'
   }

 },

 /**
  * 组件的初始数据
  */
 data: {
   flag: true,
 },

 /**
  * 组件的方法列表
  */
 methods: {
   hidePopup: function () {
     this.setData({
       flag: !this.data.flag
     })
   },
   //展示弹框
   showPopup() {
     this.setData({
       flag: !this.data.flag
     })
   },
   /*
   * 内部私有方法建议以下划线开头
   * triggerEvent 用于触发事件
   */
   _error:function() {
     //触发取消回调
     this.triggerEvent("error")
   },
   _success() {
     //触发成功回调
     this.triggerEvent("success");
   }
 
 }
})

注意:

我这个是自定义组件是在app全局配置上面是没有的。Component有这个就表示是自定义创建的组件

1.自定义组件内部写法:

properties:组件对外属性,是属性名到属性设置的映射表。

意思:

比如B文件夹为自定义组件,A文件夹为要让B文件显示出来的,那么B文件里面的一写变量如<view>{{title}}</view> title里面的属性要在A文件显示出来那么你就要把变量写在properties:属性列表里面.

// 属性定义(详情参见下文)
 properties: {
  title: { // 属性名
     type: String,
     value: ''
   },
   myProperty2: String // 简化的定义方式
 },

 data: {}, // 私有数据,可用于模板渲染

它里面的写法比如你的变量title变量那里面的值就要按照上面的格式进行填写,type它的基本类型,value的值是它的变量值。

2.methods:组件方法。组件的方法,包括事件响应函数和任意的自定义方法,关于事件响应函数的使用。

  methods: {
   onMyButtonTap: function(){
     this.setData({
       // 更新属性和数据的方法与更新页面数据的方法类似
     })
   },

和上面的properties一个道理都是和另一使用这个组件的文件家而进行互相联系的。

注意:methods

如果你要在A JS中应用 B js中的方法那么你一定要把方法或者函数之类的写在methods,这是微信小程序的标准之一。




返回列表 返回列表
评论

    分享到