微信小程序自定义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的漂亮的代码片段
Jun 05 Javascript
JavaScript中的document.referrer在各种浏览器测试结果
Jul 18 Javascript
JS中使用sort结合localeCompare实现中文排序实例
Jul 23 Javascript
纯js代码实现未知宽高的元素在指定元素中垂直水平居中显示
Sep 12 Javascript
JS定时器使用,定时定点,固定时刻,循环执行详解
May 31 Javascript
jquery中用jsonp实现搜索框功能
Oct 18 Javascript
JS日程管理插件FullCalendar中文说明文档
Feb 06 Javascript
Vue指令的钩子函数使用方法
Mar 20 Javascript
BootStrap 页签切换失效的解决方法
Aug 17 Javascript
jQuery实现动画、消失、显现、渐出、渐入效果示例
Sep 06 jQuery
JavaScript如何实现元素全排列实例代码
May 14 Javascript
Element Backtop回到顶部的具体使用
Jul 27 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通过curl模拟登陆DZ论坛
2015/05/11 PHP
PHP SESSION跨页面传递失败解决方案
2020/12/11 PHP
javascript编程起步(第五课)
2007/02/27 Javascript
js 字符串操作函数
2009/07/25 Javascript
javascript数组去重方法终极总结
2014/06/05 Javascript
分享一款基于jQuery的视频播放插件
2014/10/09 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
2017/01/20 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
关于js中的鼠标事件总结
2017/07/11 Javascript
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
微信分享invalid signature签名错误踩过的坑
2020/04/11 Javascript
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
2015/05/02 Python
Python列表list内建函数用法实例分析【insert、remove、index、pop等】
2017/07/24 Python
python opencv设置摄像头分辨率以及各个参数的方法
2018/04/02 Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
2018/09/04 Python
pycharm 在windows上编辑代码用linux执行配置的方法
2018/10/27 Python
python获取时间及时间格式转换问题实例代码详解
2018/12/06 Python
Python 做曲线拟合和求积分的方法
2018/12/29 Python
django 实现编写控制登录和访问权限控制的中间件方法
2019/01/15 Python
对Python实现累加函数的方法详解
2019/01/23 Python
Python模拟百度自动输入搜索功能的实例
2019/02/14 Python
Python json模块与jsonpath模块区别详解
2020/03/05 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
2020/06/06 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
2020/08/07 Python
css3 box-sizing属性使用参考指南
2013/01/08 HTML / CSS
英国水族馆和池塘用品购物网站:Warehouse Aquatics
2019/08/29 全球购物
意大利中国电子产品购物网站:Geekmall.com
2019/09/30 全球购物
花卉与景观设计系大学生求职信
2013/10/01 职场文书
加油口号大全
2014/06/13 职场文书
讲文明知礼仪演讲稿
2014/09/13 职场文书
公安机关党的群众路线教育实践活动剖析材料
2014/10/10 职场文书
2015年银行客户经理工作总结
2015/04/01 职场文书
小学语文教学反思范文
2016/03/03 职场文书
广播稿:校园广播稿范文
2019/04/17 职场文书
利用Python读取微信朋友圈的多种方法总结
2021/08/23 Python
MySQL实现字段分割一行转多行的示例代码
2022/07/07 MySQL