微信小程序下拉框组件使用方法详解


Posted in Javascript onDecember 28, 2018

本文实例为大家分享了微信小程序下拉框组件的使用方法,供大家参考,具体内容如下

适用场景

1、省市三级联动
2、出生日期选择
3、性别选择
4、一般性的下拉选择等

一、省市三级联动使用

注意mode = region,以及value = “一维数组”

//.wxml
<picker mode="region" bindchange="bindViewEvent" data-model="component" 
data-method="bindSelect" data-name="region" value="{{region}}" custom-item="{{customItem}}">
<view class="picker">
   当前选择:{{region[0]}},{{region[1]}},{{region[2]}}
</view>
</picker>

二、出生日期选择

注意mode = date,以及value = “日期字符串”

<picker mode="date" value="{{date}}" start="2015-09-01" end="2017-09-01" bindchange="bindViewEvent" data-model="component" data-method="bindSelect" date-mode="date" data-name="date">
  <view class="picker">
  {{date}}
  </view>
</picker>

三、性别选择

注意,不填mode默认为selector,range=”一维数组”,value=”当前选中索引”

<picker bindchange="bindViewEvent" data-model="component" data-method="bindSelect" data-name="index" value='{{index}}' range="{{gender}}">
  <view class="label-right">
    {{gender[index]}}
  </view>
</picker>

以上都需要在.js里设置相关初始变量!

//.js
 var app = getApp();

 data: {

  region:['河北','沧州','河间'],
  date:'2010-10-10',
  gender:['男','女'],
  index:0
 },

 bindViewEvent:function(e){

  app.process(this,e);  
 }

相关js类

//component.js
const select = require('../component/select.js');
const upload = require('../component/upload.js');

class component{

 constructor(com, that) {

  this.com = com;
  this.that = that;
 }

 //绑定下拉框选择事件
 bindSelect(data){

  let self = this;

  let mode = data.currentTarget.dataset.mode;

  let name = data.currentTarget.dataset.name;

  let picker = new select({
   that: self.that,
   mode: mode,
   name: name
  });

  picker.change(data.detail.value);
 }

 //点击事件,传递参数为e.currentTarget.dataset
 bindImageChoose(data){

  //图片上传
  this.uploader = new upload({
   that: that,
   name: data.name,
   mode: data.mode,
   count: data.count || 9
  });

  this.uploader.choose();
 }

 bindImageDel(data){

  //图片上传
  this.uploader = new upload({
   that: that,
   name: data.name,
   mode: data.mode,
   count: data.count || 9
  });

  this.uploader.del(data.index);
 }

}
module.exports = component;


//select.js
/*
* 下拉框对象
*/
class picker{

 constructor(data){

  this.that = data.that;
  this.name = data.name || 'date';
  this.mode = data.mode || 'selector';
 }

 show(name,data){

  let view = {};
  view[name] = data;

  this.that.setData(view);
 }

 change(data){

  let self = this;

  self.show(self.name, data);
 }
}
module.exports = picker;

//upload.js
class picUploader {

 constructor(data) {

  this.that = data.that;
  this.name = data.name;
  this.mode = data.mode || 1;
  this.count = this.model == 1 ? 1 : data.count || 9;
 }

 /*
 * 选择图片
 */
 choose() {

  const self = this;

  wx.chooseImage({
   count: (self.count - self.that.data[self.name].length),
   sizeType: ['original', 'compressed'],
   sourceType: ['album', 'camera'],
   success: function (res) {
    var tempFilePaths = res.tempFilePaths;

    self.append(tempFilePaths);
   }
  })
 }

 /*
 * 显示图片
 */

 show() {

  let self = this;
  let view = {};
  view[self.name] = self.that.data[self.name];

  self.that.setData(view);

 }

 /*
 * 追加图片
 */
 append(data) {

  const self = this;
  for (let i = 0; i < data.length; i++) {

   self.that.data[self.name].push(data[i]);
  }

  self.show();
 }

 /*
 * 删除图片
 */
 del(index) {

  let self = this;

  self.that.data[self.name].splice(index, 1);

  self.show();
 }


}
module.exports = picUploader;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
学习并汇集javascript匿名函数
Nov 25 Javascript
了不起的node.js读书笔记之mongodb数据库交互
Dec 22 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
Jan 12 Javascript
深入理解JavaScript系列(47):对象创建模式(上篇)
Mar 04 Javascript
javascript使用输出语句实现网页特效代码
Aug 06 Javascript
jQuery弹出遮罩层效果完整示例
Sep 13 Javascript
Webpack打包慢问题的完美解决方法
Mar 16 Javascript
详解Vue 方法与事件处理器
Jun 20 Javascript
vue表单数据交互提交演示教程
Nov 13 Javascript
JavaScript 实现HTML DOM增删改查操作的常见方法详解
Jan 04 Javascript
js实现经典贪吃蛇小游戏
Mar 19 Javascript
vue 使用rules对表单字段进行校验的步骤
Dec 25 Vue.js
微信小程序实现星级评价效果
Dec 28 #Javascript
微信小程序实现日历效果
Dec 28 #Javascript
Mint UI实现A-Z字母排序的城市选择列表
Dec 28 #Javascript
axios携带cookie配置详解(axios+koa)
Dec 28 #Javascript
微信小程序日历/日期选择插件使用方法详解
Dec 28 #Javascript
解决echarts的多个折现数据出现坐标和值对不上的问题
Dec 28 #Javascript
微信小程序时间控件picker view使用详解
Dec 28 #Javascript
You might like
php中将网址转换为超链接的函数
2011/09/02 PHP
php 无法加载mysql的module的时候的配置的解决方案引发的思考
2012/01/27 PHP
php写的带缓存数据功能的mysqli类
2012/09/06 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
2018/11/10 PHP
发现的以前不知道的函数
2006/09/19 Javascript
javascript如何使用bind指定接收者
2014/05/04 Javascript
JavaScript保留两位小数的2个自定义函数
2014/05/05 Javascript
IE6浏览器中window.location.href无效的解决方法
2014/11/20 Javascript
jquery中EasyUI实现同步树
2015/03/01 Javascript
js事件监听器用法实例详解
2015/06/01 Javascript
jQuery操作Table技巧大汇总
2016/01/23 Javascript
js判断上传文件后缀名是否合法
2016/01/28 Javascript
javascript鼠标滑过显示二级菜单特效
2020/11/18 Javascript
vue开发心得和技巧分享
2016/10/27 Javascript
微信小程序之仿微信漂流瓶实例
2016/12/09 Javascript
Require.js的基本用法详解
2017/07/03 Javascript
vue-resource调用promise取数据方式详解
2017/07/21 Javascript
详解Vue.js在页面加载时执行某个方法
2018/11/20 Javascript
vue微信分享出来的链接点开是首页问题的解决方法
2018/11/28 Javascript
Vue 实现手动刷新组件的方法
2019/02/19 Javascript
解决vue单页面应用中动态修改title问题
2019/06/09 Javascript
深入探索VueJS Scoped CSS 实现原理
2019/09/23 Javascript
使用Element的InfiniteScroll 无限滚动组件报错的解决
2020/07/27 Javascript
Python 类与元类的深度挖掘 I【经验】
2016/05/06 Python
Python用list或dict字段模式读取文件的方法
2017/01/10 Python
python通过opencv实现图片裁剪原理解析
2020/01/19 Python
python如何通过pyqt5实现进度条
2020/01/20 Python
python3将变量输入的简单实例
2020/08/19 Python
非功能性需求都包括哪些方面
2013/10/29 面试题
少儿节目主持串词
2014/04/02 职场文书
体育口号大全
2014/06/18 职场文书
2014年维稳工作总结
2014/11/18 职场文书
2015年六一儿童节演讲稿
2015/03/19 职场文书
2015年新教师个人工作总结
2015/10/14 职场文书
《颐和园》教学反思
2016/02/19 职场文书
Spring Data JPA框架的核心概念和Repository接口
2022/04/28 Java/Android