微信小程序自定义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 相关文章推荐
比较简单实用的使用正则三种版本的js去空格处理方法
Nov 18 Javascript
jQuery学习笔记之jQuery的DOM操作
Dec 22 Javascript
ExtJS下书写动态生成的xml(兼容火狐)
Apr 02 Javascript
使用jQuery管理选择结果
Jan 20 Javascript
JavaScript调用传递变量参数的相关问题及解决办法
Nov 01 Javascript
深入探讨Vue.js组件和组件通信
Sep 12 Javascript
JavaScript生成验证码并实现验证功能
Sep 24 Javascript
JS实现列表页面隔行变色效果
Mar 25 Javascript
jQuery niceScroll滚动条错位问题的解决方法
Feb 03 jQuery
vue 纯js监听滚动条到底部的实例讲解
Sep 03 Javascript
vue中使用 pako.js 解密 gzip加密字符串的方法
Jun 10 Javascript
Vue全家桶入门基础教程
May 14 Vue.js
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下网站防IP攻击代码,超级实用
2010/10/24 PHP
详解Yii实现分页的两种方法
2017/01/14 PHP
Javascript常考语句107条收集
2010/03/09 Javascript
js换图片效果可进行定时操作
2014/06/09 Javascript
JS JSOP跨域请求实例详解
2016/07/04 Javascript
详解Vue webapp项目通过HBulider打包原生APP
2018/06/29 Javascript
vue-router的HTML5 History 模式设置
2018/09/08 Javascript
小程序getLocation需要在app.json中声明permission字段
2019/04/04 Javascript
微信小程序第三方框架对比 之 wepy / mpvue / taro
2019/04/10 Javascript
vue使用代理解决请求跨域问题详解
2019/07/24 Javascript
vue router-link 默认a标签去除下划线的实现
2020/11/06 Javascript
Python编程中运用闭包时所需要注意的一些地方
2015/05/02 Python
python相似模块用例
2016/03/04 Python
python学习之matplotlib绘制散点图实例
2017/12/09 Python
python中in在list和dict中查找效率的对比分析
2018/05/04 Python
python框架中flask知识点总结
2018/08/17 Python
Python发送邮件功能示例【使用QQ邮箱】
2018/12/04 Python
Django 日志配置按日期滚动的方法
2019/01/31 Python
Python3 操作 MySQL 插入一条数据并返回主键 id的实例
2020/03/02 Python
详解python中的闭包
2020/09/07 Python
python实现二分查找算法
2020/09/18 Python
HTML5如何为形状图上颜色怎么绘制具有颜色和透明度的矩形
2014/06/23 HTML / CSS
自荐信怎么写呢?
2013/12/09 职场文书
汽车促销活动方案
2014/03/31 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
大学生考试作弊被抓检讨书
2014/12/27 职场文书
教师节班会开场白
2015/06/01 职场文书
看雷锋电影观后感
2015/06/10 职场文书
投诉信范文
2015/07/02 职场文书
党务工作者主要事迹材料
2015/11/03 职场文书
关于做家务的心得体会
2016/01/23 职场文书
全家福照片寄语怎么写?
2019/04/02 职场文书
微信小程序实现拍照和相册选取图片
2021/05/09 Javascript
Python中使用ipython的详细教程
2021/06/22 Python
JS 基本概念详细介绍
2021/10/16 Javascript
关于Mybatis中SQL节点的深入解析
2022/03/19 Java/Android