当前位置: 首页 > article >正文

【小程序】dialog组件

请添加图片描述

这个比较简单 我就直接上代码了

只需要传入title即可, 内容部分设置slot

代码

dialog.ttml

<view class="dialog-wrapper" hidden="{{!visible}}">
  <view class="mask" />
  <view class="dialog">
    <view class="dialog-header">
      <text class="dialog-title">{{ title }}</text>
      <dg-button type="text" icon="close" bind:handleClick="handleCancel" />
    </view>
    <view class="dialog-content">
      <slot />
    </view>
    <view class="dialog-footer">
      <dg-button type="primary" content="取消" plain bind:handleClick="handleCancel" />
      <dg-button type="primary" content="确定" bind:handleClick="handleConfirm" />
    </view>
  </view>
</view>

dialog.ttss

.mask {
  position: fixed;
  z-index: 1000;
  top: 0;
  right: 0;
  left: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.3);
}
.dialog {
  position: fixed;
  margin: 0 auto 50px;
  background: #fff;
  border-radius: 10px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
  box-sizing: border-box;
  width: 60%;
  z-index: 2000;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background-color: #ffffff;
  overflow: hidden;
}
.dialog-header {
  padding: 16px 24px;
  font-size: 16px;
  color: rgba(0, 0, 0, 0.88);
  text-align: left;
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}
.dialog-title {
  font-weight: 500;
}
.dialog-content {
  padding: 32px 100px;
}
.dialog-footer {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  padding: 8px 24px 20px;
}

dialog.js

Component({
  options: {
    addGlobalClass: true,
  },
  properties: {
    title: {
      type: String,
      value: '标题',
    },
  },
  data: {
    visible: false,
  },
  methods: {
    // 隐藏弹框
    hideDialog() {
      this.setData({
        visible: !this.data.visible,
      });
    },
    // 展示弹框
    showDialog() {
      this.setData({
        visible: !this.data.visible,
      });
    },
    handleCancel() {
      this.triggerEvent('handleCancel');
    },
    handleConfirm() {
      this.triggerEvent('handleConfirm');
    },
  },
});

dialog.json

{
  "component": true,
  "usingComponents": {
    "dg-button": "/components/button/button"
  }
}

使用

	<dialog 
      id='dialog' 
      title='我是标题' 
      bind:handleCancel="handleCancel"  
      bind:handleConfirm="handleConfirm"
    >
      hahah
    </dialog>
    <button type="primary" bindtap="showDialog" content="ClickMe!" />
  onReady: function () {
    //获得dialog组件
    this.dialog = this.selectComponent("#dialog");
    },
  showDialog(){
    this.dialog.showDialog();
  },
    //取消事件
  handleCancel(){
    console.log('点击了取消');
    this.dialog.hideDialog();
  },
    //确认事件
  handleConfirm(){
    console.log('点击了确定');
    this.dialog.hideDialog();
  }

http://www.kler.cn/a/401841.html

相关文章:

  • PHP批量操作加锁
  • CSP/信奥赛C++语法基础刷题训练(16):洛谷P5731:蛇形方阵
  • C++11——异常
  • 网络安全检测技术
  • python用哈希删除文件夹中重复的图片
  • linux配置动态ip
  • 网络--网络层协议--IP
  • ARM CCA机密计算安全模型之生态
  • hhdb数据库介绍(9-24)
  • SpringBoot 增量部署发布(第2版)
  • Leetcode 寻找峰值
  • flink StreamGraph 构造flink任务
  • Blender vs 3dMax谁才是3D软件的未来?
  • 【Unity踩坑】Unity编辑器占用资源过高
  • SSH公钥有什么用?Windows 11操作系统上如何获取SSH公钥
  • 厦门凯酷全科技有限公司正规吗?
  • 【设计模式】行为型模式(三):责任链模式、状态模式
  • 【Python模拟websocket登陆-拆包封包】
  • 优化装配,提升品质:虚拟装配在汽车制造中的关键作用
  • 悬浮框前端效果查看与造数