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


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 相关文章推荐
HTML中Select不用Disabled实现ReadOnly的效果
Apr 07 Javascript
jQuery Clone Bug解决代码
Dec 22 Javascript
javascript smipleChart 简单图标类
Jan 12 Javascript
jQuery事件绑定.on()简要概述及应用
Feb 07 Javascript
js特殊字符转义介绍
Nov 05 Javascript
javascript获取URL参数与参数值的示例代码
Dec 20 Javascript
教你JS中的运算符乘方、开方及变量格式转换
Aug 09 Javascript
jquery实现简单实用的轮播器
May 23 jQuery
Vue学习笔记进阶篇之过渡状态详解
Jul 14 Javascript
JS实现简单表格排序操作示例
Oct 07 Javascript
使用vue官方提供的模板vue-cli搭建一个helloWorld案例分析
Jan 16 Javascript
vue2.0 实现富文本编辑器功能
May 26 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
模仿OSO的论坛(三)
2006/10/09 PHP
destoon实现调用自增数字从1开始的方法
2014/08/21 PHP
PHP比你想象的好得多
2014/11/27 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
2015/04/17 PHP
PHP实现多关键字加亮功能
2016/10/21 PHP
php字符集转换
2017/01/23 PHP
基于jQuery实现模拟页面加载进度条
2013/04/01 Javascript
如何使用jquery easyui创建标签组件
2015/11/18 Javascript
jquery判断checkbox是否选中及改变checkbox状态的实现方法
2016/05/26 Javascript
AngularJS实践之使用ng-repeat中$index的注意点
2016/12/22 Javascript
jQuery 导航自动跟随滚动的实现代码
2018/05/30 jQuery
Vue在 Nuxt.js 中重定向 404 页面的方法
2019/04/23 Javascript
layui上传图片到服务器的非项目目录下的方法
2019/09/26 Javascript
vue-cli设置css不生效的解决方法
2020/02/07 Javascript
微信小程序仿抖音短视频切换效果的实例代码
2020/06/24 Javascript
Python中使用copy模块实现列表(list)拷贝
2015/04/14 Python
python模拟enum枚举类型的方法小结
2015/04/30 Python
python 字典 按key值大小 倒序取值的实例
2018/07/06 Python
Django配置跨域并开发测试接口
2020/11/04 Python
如何用Python进行时间序列分解和预测
2021/03/01 Python
Canvas globalCompositeOperation
2018/12/18 HTML / CSS
加拿大购物频道:The Shopping Channel
2016/07/21 全球购物
奥地利网上现代灯具和灯饰店:Lampenwelt.at
2018/01/29 全球购物
英国银首饰公司:e&e Jewellery
2021/02/11 全球购物
化工工艺专业求职信
2013/09/22 职场文书
美发活动策划书
2014/01/14 职场文书
保护环境的建议书
2014/03/12 职场文书
工地宣传标语
2014/06/18 职场文书
民事授权委托书范文
2014/08/02 职场文书
小学家长学校培训材料
2014/08/24 职场文书
葬礼主持词
2015/07/02 职场文书
学校学期工作总结
2015/08/13 职场文书
企业法人任命书
2015/09/21 职场文书
晶体管单管来复再生式收音机
2021/04/22 无线电
Go语言基础知识点介绍
2021/07/04 Golang
动画《朋友游戏》公开佐藤友生绘制的开播纪念绘
2022/04/06 日漫