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


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中的eval()函数详解
Aug 22 Javascript
JS 日期比较大小的简单实例
Jan 13 Javascript
基于jQuery的判断iPad、iPhone、Android是横屏还是竖屏的代码
May 11 Javascript
js正则表达式中exec用法实例
Jul 23 Javascript
BootStrap的弹出框(Popover)支持鼠标移到弹出层上弹窗层不隐藏的原因及解决办法
Apr 03 Javascript
jQuery中的一些常见方法小结(推荐)
Jun 13 Javascript
JS中实现函数return多个返回值的实例
Feb 21 Javascript
jfinal与bootstrap的登出实战详解
Nov 27 Javascript
Vue CLI3 如何支持less的方法示例
Aug 29 Javascript
浅谈vue引用静态资源需要注意的事项
Sep 28 Javascript
Vue实现菜单切换功能
Nov 08 Javascript
JS前端可视化canvas动画原理及其推导实现
Aug 05 Javascript
微信小程序实现星级评价效果
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 api函数实现数组的交换排序示例
2014/04/13 PHP
WordPress开发中短代码的实现及相关函数使用技巧
2016/01/05 PHP
PHP面向对象自动加载机制原理与用法分析
2016/10/14 PHP
php从身份证获取性别和出生年月
2017/02/09 PHP
javascript 放大镜效果js组件 qsoft.PopBigImage.v0.35 加入了chrome支持
2009/04/07 Javascript
JavaScript动态加载样式表的方法
2015/03/21 Javascript
jQuery满屏焦点图左右滚动特效代码分享
2015/09/07 Javascript
javascript与jquery动态创建html元素示例
2016/07/25 Javascript
微信小程序 教程之条件渲染
2016/10/18 Javascript
JavaScript和JQuery获取DIV值的方法示例
2017/03/07 Javascript
jquery处理checkbox(复选框)是否被选中实例代码
2017/06/12 jQuery
Vuex实现计数器以及列表展示效果
2018/03/10 Javascript
vue构建动态表单的方法示例
2018/09/22 Javascript
Node.js JSON模块用法实例分析
2019/01/04 Javascript
[01:12](回顾)DOTA2国际邀请赛,全世界DOTAer的盛宴
2014/07/01 DOTA
[01:11:11]Alliance vs RNG 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
Python使用xlrd读取Excel格式文件的方法
2015/03/10 Python
Python中IPYTHON入门实例
2015/05/11 Python
Python自定义函数定义,参数,调用代码解析
2017/12/27 Python
pandas.DataFrame.to_json按行转json的方法
2018/06/05 Python
Python开发的十个小贴士和技巧及长常犯错误
2018/09/27 Python
Python 利用高德地图api实现经纬度与地址的批量转换
2019/08/14 Python
python使用Geany编辑器配置方法
2020/02/21 Python
如何在mac版pycharm选择python版本
2020/07/21 Python
python中round函数保留两位小数的方法
2020/12/04 Python
用CSS3的box-reflect来制作倒影效果
2016/11/15 HTML / CSS
Yankee Candle官网:美国最畅销蜡烛品牌之一
2020/01/05 全球购物
工艺工程师工作职责
2013/11/23 职场文书
销售顾问岗位职责
2014/02/25 职场文书
学雷锋树新风演讲稿
2014/05/10 职场文书
大学生应聘导游自荐信
2014/06/02 职场文书
辞旧迎新演讲稿
2014/09/15 职场文书
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
社区国庆节活动总结
2015/03/23 职场文书
南阳市白酒市场的调查报告
2019/11/08 职场文书
Python基础之Socket通信原理
2021/04/22 Python