微信小程序自定义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 相关文章推荐
JQuery 学习笔记 选择器之四
Jul 23 Javascript
表单切换,用回车键替换Tab健(不支持IE)
Jul 20 Javascript
JQuery的Ajax跨域请求原理概述及实例
Apr 26 Javascript
javascript 得到文件后缀名的思路及实现
May 09 Javascript
javascript简单性能问题及学习笔记
Feb 04 Javascript
jQuery学习笔记之jQuery中的$
Jan 19 Javascript
jQuery布局组件EasyUI Layout使用方法详解
Feb 28 Javascript
JavaScript中如何判断一个值的类型
Sep 15 Javascript
jQuery选择器之表单元素选择器详解
Sep 19 jQuery
vue中keep-alive的用法及问题描述
May 15 Javascript
vue使用Element组件时v-for循环里的表单项验证方法
Jun 28 Javascript
JavaScript 反射学习技巧
Oct 16 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
PHP简单实现HTTP和HTTPS跨域共享session解决办法
2015/05/27 PHP
javascript parseInt 函数分析(转)
2009/03/21 Javascript
nodejs中使用monk访问mongodb
2014/07/06 NodeJs
js实现简单鼠标跟随效果的方法
2015/04/10 Javascript
JS实现左右拖动改变内容显示区域大小的方法
2015/10/13 Javascript
自己动手制作基于jQuery的Web页面加载进度条插件
2016/06/03 Javascript
jQuery过滤选择器经典应用
2016/08/18 Javascript
AngularJS  $modal弹出框实例代码
2016/08/24 Javascript
jQuery实现点击后高亮背景固定显示的菜单效果【附demo源码下载】
2016/09/21 Javascript
JS获取本周周一,周末及获取任意时间的周一周末功能示例
2017/02/09 Javascript
Vue封装Swiper实现图片轮播效果
2018/02/06 Javascript
webpack里使用jquery.mCustomScrollbar插件的方法
2018/05/30 jQuery
mocha的时序规则讲解
2019/02/16 Javascript
微信小程序仿通讯录功能
2020/04/09 Javascript
vue 使用post/get 下载导出文件操作
2020/08/07 Javascript
python基础教程之分支、循环简单用法
2016/06/16 Python
python编程培训 python培训靠谱吗
2018/01/17 Python
解决python3 Pycharm上连接数据库时报错的问题
2018/12/03 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
2019/10/23 Python
使用Tensorboard工具查看Loss损失率
2020/02/15 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
2020/03/10 Python
解决pycharm不能自动补全第三方库的函数和属性问题
2020/03/12 Python
python3利用Axes3D库画3D模型图
2020/03/25 Python
python 比较字典value的最大值的几种方法
2020/04/17 Python
python 在threading中如何处理主进程和子线程的关系
2020/04/25 Python
如何用PHP实现邮件发送
2012/12/26 面试题
介绍一下RMI的基本概念
2016/12/17 面试题
演讲稿开场白
2014/01/13 职场文书
大学生期末自我鉴定
2014/02/01 职场文书
个人党性剖析材料
2014/02/03 职场文书
班级年度安全计划书
2014/05/01 职场文书
群教班子对照检查材料
2014/08/26 职场文书
公司承诺书格式范文
2015/04/28 职场文书
致我们终将逝去的青春观后感
2015/06/10 职场文书
linux下导入、导出mysql数据库命令的实现方法
2021/05/26 MySQL
一篇文章了解正则表达式的替换技巧
2022/02/24 Javascript