微信小程序弹窗组件

微信里面没有类似vue中的element-ui的Dailog弹窗,只能自己创建应该Dialog组件

目录

微信里面没有类似vue中的element-ui的Dailog弹窗,只能自己创建应该Dialog组

1:先在components中创建应该dailog组件;

 

 

2:在dialog.wxml中代码如下 ;

<view class="dialog-container" hidden="{{!showDialog}}">
  <view class="dialog" style="width:{{width}};padding: {{padding[0]}}rpx {{padding[1]}}rpx {{padding[2]}}rpx {{padding[3]}}rpx;">
    <view class="dialog-header">{{title}}</view>
    <view class="dialog-content">{{content}}</view>
    <view class="dialog-footer">
      <view class="cancel-button" bindtap="onCancel">取消</view>
      <view class="confirm-button" bindtap="onConfirm">确定</view>
    </view>
  </view>
</view>

3: 在dialog.js中代码如下;

Component({
  properties: {
    title: String,
    content: String,
    width:{
      type:Number,
      value:622
    },
    padding:{
      type:Number,
      value:[64,48,48,48]
    }
  },

  data: {
    showDialog: false,
  },

  methods: {
    show () {
      this.setData({
        showDialog: true,
      });
    },

    hide() {
      this.setData({
        showDialog: false,
      });
    },

    onConfirm() {
      this.triggerEvent('confirm');
      this.hide();
    },

    onCancel () {
      this.triggerEvent('cancel');
      this.hide();
    },
  },
});

4:在dailog.wxss中代码如下;

.dialog-container {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 130%;
  background: rgba(0, 0, 0, 0.5);
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 999;
}

.dialog {
  width: 80%;
  height: 360rpx;
  background: #fff;
  border-radius: 10rpx;
  padding: 20rpx;
  box-sizing: border-box;
  text-align: center;
}

.dialog-header {
  font-size: 32rpx;
  font-weight: bold;
  color: rgba(0, 0, 0, 0.9);
  margin-bottom: 16rpx;
}

.dialog-content {
  font-size: 32rpx;
  font-weight: 400;
  color: rgba(0, 0, 0, 0.6);
  margin-bottom: 48rpx;
}

.dialog-footer {
  display: flex;
  justify-content: space-between;
}

.cancel-button,
.confirm-button {
  width: 234rpx;
  height: 80rpx;
  border-radius: 12rpx;
  font-weight: bold;
  font-size: 32rpx;
  text-align: center;
  line-height: 80rpx;
}

.cancel-button {
  background: #F2F3FF;
  color: #0052D9;
}

.confirm-button {
  background: #0052D9;
  color: #FFFFFF;
}

5:我是已经把dialog组件封装好了,下面是我使用dialog组件的用法,

 

引入自己写好的dialog组件 下面是在页面使用;

<yd-dialog id="dialog" title="提示" content="是否退还桶押金" bindconfirm="onDialogConfirm" bindcancel="onDialogCancel"></yd-dialog>

这里是我在触发dialog的方法以及获得组件实例和数据源,想要获取组件实例,就必须在组件使用id='xxxxx',我这里使用的是id="dialog",所以得到组件实例的就是下面的this.selectComponent('#dialog')

 

然后你就可以操作组件的方法,数据。可以父组件控制dialog的开启关闭 

总结:还有很多值可以直接传进去的,大家可以自由选择传相应的值来控制弹窗的大小,按钮的尺寸,字体大小,弹出的位置等

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值