微信小程序自定义prompt组件步骤详解


Posted in Javascript onJune 12, 2018

步骤一:新建一个component的文件夹,用来放所有的自定义组件;
 步骤二:在该目录下新建一个prompt的文件夹,用来放prompt组件;
 步骤三:右击?>新建?>component

微信小程序自定义prompt组件步骤详解

直接上代码

wxml

<view class="prompt-box" hidden="{{isHidden}}">
  <view class="prompt-content contentFontColor">
    <view class="prompt-title">{{title}}</view>
    <input class="prompt-input" type="digit" bindinput="_input" value="{{cost}}" />
    <view class="prompt-btn-group">
      <button class="btn-item prompt-cancel-btn contentFontColor" bind:tap="_cancel">{{btn_cancel}}</button>
      <button class="btn-item prompt-certain-btn" bind:tap="_confirm">{{btn_certain}}</button>
    </view>
  </view>
</view>

js

// components/prompt/prompt.js
Component({
 options: {
  multipleSlots: true // 在组件定义时的选项中启用多slot支持
 },
 /**
  * 组件的属性列表
  */
 properties: {
  title: {      
   type: String,  
   value: '标题'  
  },
  btn_cancel: {
   type: String,
   value: '取消'
  },
  btn_certain: {
   type: String,
   value: '确定'
  }
 },
 data: {
  isHidden: true,
 },
 methods: {
  hidePrompt: function () {
   this.setData({
    isHidden: true
   })
  },
  showPrompt () {
   this.setData({
    isHidden: false
   })
  },
  /*
  * 内部私有方法建议以下划线开头
  * triggerEvent 用于触发事件
  */
  _cancel () {
    //触发cancel事件,即在外部,在组件上绑定cancel事件即可,bind:cancel,像绑定tap一样
   this.triggerEvent("cancel")
  },
  _confirm () {
   this.triggerEvent("confirm");
  },
  _input(e){
    //将参数传出去,这样在getInput函数中可以通过e去获得必要的参数
   this.triggerEvent("getInput",e.detail);   
  }
 }
})

json

{
 "component": true,
 "usingComponents": {}
}

wxss

/* components/vas-prompt/vas-prompt.wxss */
.prompt-box {
 position: absolute;
 left: 0;
 top: 0;
 width: 100%;
 height: 100%;
 z-index: 11;
 background: rgba(0, 0, 0, .5);
}
.prompt-content {
 position: absolute;
 left: 50%;
 top: 40%;
 width: 80%;
 max-width: 600rpx;
 border: 2rpx solid #ccc;
 border-radius: 10rpx;
 box-sizing: bordre-box;
 transform: translate(-50%, -50%); 
 overflow: hidden;
 background: #fff;
}
.prompt-title {
 width: 100%;
 padding: 20rpx;
 text-align: center;
 font-size: 40rpx;
 border-bottom: 2rpx solid gray;
}
.prompt-input{
 margin: 8%;
 padding: 10rpx 15rpx;
 width: 80%;
 height:85rpx;
 border: 1px solid #ccc;
 border-radius: 10rpx;
}
.prompt-btn-group{
 display: flex;
}
.btn-item {
 width: 35%;
 margin-bottom: 20rpx;
 height: 100rpx;
 line-height: 100rpx;
 background-color: white;
 justify-content: space-around;
}
.prompt-certain-btn{
 color: white;
 background-color: #4FEBDE;
}
.prompt-cancel-btn{
 border: 1px solid #4FEBDE;
}
.contentFontColor {
 color: #868686;
}

使用

 例如,在index.html中使用

 在json中添加useComponents属性

"usingComponents": {
  "vas-prompt": "./components/prompt/prompt" 
 }

wxml

<prompt id="prompt" 
  title='test' 
  btn_certain='确定' 
  bind:getInput="getInput" 
  bind:cancel="cancel"
  bind:confirm="confirm">
</prompt>
<button bindtap="showPrompt">点击弹出prompt</button>

js

//在onReady生命周期函数中,先获取prompt实例
onReady:function(){
  this.prompt = this.selectComponent("#prompt");
},
//显示prompt
showPrompt:function(){
  this.prompt.showPrompt();
},
//将输入的value保存起来
getInput: function (e) {
  this.setData({
   value: e.detail.value
  })
},
confirm: function () {
  let _cost = this.data.value;
  if (_cost == '') {
   console.log('你还未输入');
   return;
  }
  else{
    ....
  }
 },
 cancel: function () {
  this.prompt.hidePrompt();
 },

原理:

 将prompt隐藏起来,点击显示的时候则显示,然后通过原生的tap事件,触发自定义事件,在使用该组件的时候,则使用自定义事件.

总结

以上所述是小编给大家介绍的微信小程序自定义prompt组件步骤详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript 点击整页变灰的效果(可做退出效果)。
Jan 09 Javascript
javascript flash下fromCharCode和charCodeAt方法使用说明
Jan 12 Javascript
jquery监听div内容的变化具体实现思路
Nov 04 Javascript
IE8的JavaScript点击事件(onclick)不兼容的解决方法
Nov 22 Javascript
jquery修改属性值实例代码(设置属性值)
Jan 06 Javascript
Node.js 的异步 IO 性能探讨
Oct 08 Javascript
JQuery 使用attr方法实现下拉列表选中
Oct 13 Javascript
JavaScript转换二进制编码为ASCII码的方法
Apr 16 Javascript
Javascript中indexOf()和lastIndexOf应用方法实例
Aug 24 Javascript
[原创]JavaScript语法高亮插件highlight.js用法详解【附highlight.js本站下载】
Nov 01 Javascript
ionic中列表项增加和删除的实现方法
Jan 22 Javascript
js实现视图和数据双向绑定的方法分析
Feb 05 Javascript
js实现购物车功能
Jun 12 #Javascript
浅谈Node.js 中间件模式
Jun 12 #Javascript
浅谈Webpack打包优化技巧
Jun 12 #Javascript
关于TypeScript模块导入的那些事
Jun 12 #Javascript
JS实现前端页面的搜索功能
Jun 12 #Javascript
微信小程序实现弹出菜单功能
Jun 12 #Javascript
微信小程序实现折叠与展开文章功能
Jun 12 #Javascript
You might like
图片存储与浏览一例(Linux+Apache+PHP+MySQL)
2006/10/09 PHP
php下载文件,添加响应头的简单实例
2016/09/22 PHP
Paypal实现循环扣款(订阅)功能
2017/03/23 PHP
Gambit vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
js对象数组按属性快速排序
2011/01/31 Javascript
解决Extjs上传图片无法预览的解决方法
2012/03/22 Javascript
jQuery 事件的命名空间简单了解
2013/11/22 Javascript
判断window.onload是否多次使用的方法
2014/09/21 Javascript
javascript中checkbox使用方法实例演示
2015/11/19 Javascript
JS hashMap实例详解
2016/05/26 Javascript
js实现添加可信站点、修改activex安全设置,禁用弹出窗口阻止程序
2016/08/17 Javascript
JS控制TreeView的结点选择
2016/11/11 Javascript
ES6入门教程之let和const命令详解
2017/05/17 Javascript
理解javascript async的用法
2017/08/22 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
微信小程序中实现手指缩放图片的示例代码
2018/03/13 Javascript
小程序实现悬浮搜索框
2019/07/12 Javascript
详细教你微信公众号正文页SVG交互开发技巧
2019/07/25 Javascript
JS获取动态添加元素的方法详解
2019/07/31 Javascript
微信小程序拖拽排序列表的示例代码
2020/07/08 Javascript
[04:54]DOTA2-DPC中国联赛1月31日Recap集锦
2021/03/11 DOTA
python中MySQLdb模块用法实例
2014/11/10 Python
Python获取本机所有网卡ip,掩码和广播地址实例代码
2018/01/22 Python
python使用matplotlib绘制热图
2018/11/07 Python
python opencv调用笔记本摄像头
2019/08/28 Python
Python3 sys.argv[ ]用法详解
2019/10/24 Python
利用CSS3实现折角效果实例源码
2016/09/28 HTML / CSS
AVON雅芳官网:世界上最大的美容化妆品公司之一
2016/11/02 全球购物
你的自行车健身专家:FaFit24
2016/11/16 全球购物
美国医生配方营养补充剂供应商:Healthy Directions
2019/07/10 全球购物
linux面试题参考答案(6)
2014/08/29 面试题
专科应届生求职信
2013/11/24 职场文书
善意的谎言事例
2014/02/15 职场文书
农村文化建设标语
2014/10/07 职场文书
师德先进个人事迹材料
2014/12/19 职场文书
文言文辞职信
2015/02/28 职场文书