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


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 相关文章推荐
DOM Scripting中的图片切换[兼容Firefox]
Jun 12 Javascript
浏览器解析js生成的html出现样式问题的解决方法
Apr 16 Javascript
利用进制转换压缩数字函数分享
Jan 02 Javascript
JavaScript中使用typeof运算符需要注意的几个坑
Nov 08 Javascript
利用Vue.js指令实现全选功能
Sep 08 Javascript
jQuery实现的自定义滚动条实例详解
Sep 20 Javascript
Angular4学习笔记之实现绑定和分包
Aug 01 Javascript
深入理解Vue 的条件渲染和列表渲染
Sep 01 Javascript
捕获未处理的Promise错误方法
Oct 13 Javascript
详解Vue路由钩子及应用场景(小结)
Nov 07 Javascript
webpack中CommonsChunkPlugin详细教程(小结)
Nov 09 Javascript
在vue中axios设置timeout超时的操作
Sep 04 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 3行代码的分页算法(求起始页和结束页)
2009/10/21 PHP
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
解析PHP提交后跳转
2013/06/23 PHP
Zend Framework框架路由机制代码分析
2016/03/22 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
2017/07/03 PHP
JavaScript Event学习第六章 事件的访问
2010/02/07 Javascript
script标签的 charset 属性使用说明
2010/12/04 Javascript
制作jquery遮罩层效果导航菜单代码分享
2013/12/25 Javascript
node.js中的querystring.escape方法使用说明
2014/12/10 Javascript
JavaScript设计模式之代理模式介绍
2014/12/28 Javascript
常用jQuery代码分享
2015/07/14 Javascript
node.js回调函数之阻塞调用与非阻塞调用
2015/11/13 Javascript
Angular发布1.5正式版,专注于向Angular 2的过渡
2016/02/18 Javascript
AngularJS 2.0新特性有哪些
2016/02/18 Javascript
jqueryUI tab标签页代码分享
2017/10/09 jQuery
js replace 全局替换的操作方法
2018/06/12 Javascript
Nodejs实现爬虫抓取数据实例解析
2018/07/05 NodeJs
JS基于开关思想实现的数组去重功能【案例】
2019/02/18 Javascript
了解javascript中变量及函数的提升
2019/05/27 Javascript
解决三元运算符 报错“SyntaxError: can''t assign to conditional expression”
2020/02/12 Javascript
[01:23:59]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 VP vs Secret
2018/04/03 DOTA
Python编程中的文件读写及相关的文件对象方法讲解
2016/01/19 Python
利用CSS3实现炫酷的飞机起飞动画
2016/09/17 HTML / CSS
AE美国鹰美国官方网站:American Eagle Outfitters
2016/08/22 全球购物
美国顶级户外凉鞋品牌:Chacos
2017/03/27 全球购物
天猫国际进口超市直营:官方直采,一站购齐
2017/12/11 全球购物
KARATOV珠宝在线商店:俄罗斯珠宝品牌
2019/03/13 全球购物
印度领先的眼镜电子商务网站:Lenskart
2019/12/16 全球购物
农村党支部先进事迹
2014/01/14 职场文书
心理健康教育制度
2014/01/27 职场文书
购房意向书范本
2014/04/01 职场文书
集团财务总监岗位职责
2015/04/03 职场文书
幼儿园园长安全责任书
2015/05/08 职场文书
python基于tkinter制作无损音乐下载工具
2021/03/29 Python
SpringBoot集成MongoDB实现文件上传的步骤
2022/04/18 MongoDB
Typescript类型系统FLOW静态检查基本规范
2022/05/25 Javascript