1. 程式人生 > >微信小程式之modal彈出框遮罩層元件——可帶文字框

微信小程式之modal彈出框遮罩層元件——可帶文字框

modal彈出框遮罩層可實現提示資訊、驗證碼等功能
然而在官方文件已經刪除了modal的頁面,說要廢棄modal
TIM截圖20180515175836.jpg

就個人而言modal元件無法被wx.showModal完全替代。大家都知道小程式的wxml的元件可以通過改變js的值實現重新渲染,而介面是無法實現的
TIM圖片20180515180119.png

有同感的也不止博主一個人
TIM截圖20180515180147.jpg

官方18-5-13的建議要實現此類功能也是用modal

屬性

20160926160841592.jpg

說下遮罩層實現,通過改變modal的hidden屬性來控制是否顯示,通過監聽confirm方法來確認提交,通過bindinput來監聽modal內表單元件內容

TIM截圖20180515181311.jpg
TIM截圖20180515181336.jpg

js

Page({
  data: {
      hiddenModal1:true,
      hiddenModal2:true,
      input:null
  },
  showModal1:function(e){
      this.setData({hiddenModal1:false})
  },
  model1confirm:function(e){
      this.setData({ hiddenModal1: true })
      wx.showToast({
          title: '我覺得OK',
      })
  },
  model1cancel:function(e){
      this.setData({ hiddenModal1: true })
      wx.showToast({
          title: '我覺得不行',
      })
  },
  input:function(e){
      this.setData({input:e.detail.value})
  },
  showModal2: function (e) {
      this.setData({ hiddenModal2: false })
  },
  model2confirm: function (e) {
      this.setData({ hiddenModal2: true })
      wx.showToast({
          title: '確定' +this.data.input,
          icon:'none'
      })
  },
  model2cancel: function (e) {
      this.setData({ hiddenModal2: true })
      wx.showToast({
          title: '取消'+this.data.input,
          icon: 'none'
      })
  }
})

wxml

<button type="primary" bindtap='showModal1'>彈出提示modal</button>
<button type="default" bindtap='showModal2'>彈出帶文字框的modal</button>
<modal hidden="{{hiddenModal1}}" title="提示modal" confirm-text="是" cancel-text="否" bindconfirm="model1confirm" bindcancel="model1cancel">
    modal是真的好用
</modal>
<modal hidden="{{hiddenModal2}}" title="文字框的modal" confirm-text="提交" cancel-text="取消" bindconfirm="model2confirm" bindcancel="model2cancel">
    <input placeholder='請輸入內容' bindinput='input'/>
</modal>