微信小程序自定义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数组使用调用方法汇总
Dec 08 Javascript
JavaScript中获取元素索引的函数
Sep 10 Javascript
jquery 插件开发 extjs中的extend用法小结
Jan 04 Javascript
javascript利用apply和arguments复用方法
Nov 25 Javascript
弹出最简单的模式化遮罩层的js代码
Dec 04 Javascript
JavaScript中Object.prototype.toString方法的原理
Feb 24 Javascript
Vuex之理解Getters的用法实例
Apr 19 Javascript
Node.JS循环删除非空文件夹及子目录下的所有文件
Mar 12 Javascript
这样回答继承可能面试官更满意
Dec 10 Javascript
vue实现淘宝购物车功能
Apr 20 Javascript
vant 时间选择器--开始时间和结束时间实例
Nov 04 Javascript
通过实例了解Render Props回调地狱解决方案
Nov 04 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中文乱码怎么办如何让浏览器自动识别utf-8
2014/01/15 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
2015/03/25 PHP
PHP封装的数据库保存session功能类
2016/07/11 PHP
php获取POST数据的三种方法实例详解
2016/12/20 PHP
在 PHP 和 Laravel 中使用 Traits的方法
2019/11/13 PHP
js Date自定义函数 延迟脚本执行
2010/03/10 Javascript
jQuery选择器的工作原理和优化分析
2011/07/25 Javascript
jQuery学习笔记 操作jQuery对象 CSS处理
2012/09/19 Javascript
jQuery中:reset选择器用法实例
2015/01/04 Javascript
jQuery判断数组是否包含了指定的元素
2015/03/10 Javascript
JavaScript中exec函数用法实例分析
2015/06/08 Javascript
跟我学习javascript的隐式强制转换
2015/11/16 Javascript
vue.js初学入门教程(2)
2016/11/07 Javascript
Angular.js实现注册系统的实例详解
2016/12/18 Javascript
微信小程序 页面传值详解
2017/03/10 Javascript
JavaScript之事件委托实例(附原生js和jQuery代码)
2017/07/22 jQuery
详解vue 组件之间使用eventbus传值
2017/10/25 Javascript
JavaScript实现音乐自动切换和轮播
2017/11/05 Javascript
vue 根据数组中某一项的值进行排序的方法
2018/08/30 Javascript
Vue+Express实现登录状态权限验证的示例代码
2019/05/05 Javascript
微信小程序实现类似微信点击语音播放效果
2020/03/30 Javascript
python抓取最新博客内容并生成Rss
2015/05/17 Python
Python实现句子翻译功能
2017/11/14 Python
Vue的el-scrollbar实现自定义滚动
2018/05/29 Python
Python读取数据集并消除数据中的空行方法
2018/07/12 Python
解决python -m pip install --upgrade pip 升级不成功问题
2020/03/05 Python
Keras自定义IOU方式
2020/06/10 Python
html5 Web SQL Database 之事务处理函数transaction与executeSQL解析
2013/11/07 HTML / CSS
CHARLES & KEITH澳大利亚官网:新加坡时尚品牌
2019/01/22 全球购物
经典c++面试题二
2015/08/14 面试题
什么是TCP/IP
2014/07/27 面试题
介绍一下Ruby的特点
2013/01/20 面试题
目标责任书范文
2014/04/14 职场文书
小学生推普周国旗下讲话稿
2014/09/21 职场文书
感谢信的格式
2015/01/21 职场文书
Nginx location 和 proxy_pass路径配置问题小结
2021/09/04 Servers