微信小程序 - 自定义模态对话框(附源码)

357 阅读1分钟

效果图:

Ps:在电脑上调试input超出输入框范围会出现文字模糊以及位移现象(手机端不影响)
在这里插入图片描述

index.wxml

<view class="container">
  <import src="/template/addtell.wxml" />
  <template is="addtell" data="{{...addtell}}" />
  <button bindtap="footAddtell">点击输入弹出内容</button>
</view>

导入模板和引入模板所在的数据

  <import src="/template/addtell.wxml" />
  <template is="addtell" data="{{...addtell}}" />

引入模板数据 … rest参数

ES6引入了rest参数(形式为"…变量名"),用于获取函数的多余参数

参考小程序官方API

在这里插入图片描述
addtell.wxml

<template name="addtell">
  <view>
    <modal title="联系方式" confirm-text="确认" cancel-text="取消" hidden="{{addtellHidden}}" bindconfirm="modalConfirm" bindcancel="modalCancel">
      <label>
        <view class="tellsection">
          <input class="tellinput" bindinput="saveUsertell" placeholder="请输入QQ" value="{{addtell.contract_info}}" />
          <input class="tellinput" bindinput="saveUsertell" placeholder="请输入微信号" value="{{addtell.contract_info}}" />
        </view>
      </label>
    </modal>
  </view>
</template>

index.css

.tellinput {
  border: 1px solid #efeff4;
}

.tellsection input {
  color: #000;
  width: 100%;
}

index.js

Page({
  data: {
    addtell: {
      addtellHidden: true, //弹出框显示/隐藏
    },
  },
  footAddtell: function() {
    //打开弹出框
    this.setData({
      addtell: {
        addtellHidden: false,
        contract_info: ''
      }
    })
  },
  modalConfirm: function() {
    //弹出框确认操作
    this.setData({
20       addtell: {
        addtellHidden: true,
      }
    })
  },
  modalCancel: function() {
    //弹出框取消操作
    this.setData({
      addtell: {
        addtellHidden: true,
      }
    })
  },
  saveUsertell: function(e) {
    //保存input框的值
    this.setData({
      contract_info: e.detail.value,
      addtell: {
        addtellHidden: false,
      }
    })
  }
})