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


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 相关文章推荐
让页面上两个div中的滚动条(滑块)同步运动示例
Aug 07 Javascript
js 立即调用的函数表达式如何写
Jan 12 Javascript
jquery制作居中遮罩层效果分享
Feb 21 Javascript
JS常用表单验证方法总结
May 22 Javascript
jQuery验证插件validate使用详解
May 11 Javascript
JS原型链 详解及示例代码
Sep 06 Javascript
纯JS焦点图特效实例(可一个页面多用)
Dec 07 Javascript
详解用原生JavaScript实现jQuery的某些简单功能
Dec 19 Javascript
微信小程序滚动Tab实现左右可滑动切换
Aug 17 Javascript
浅谈vue-cli 3.0.x 初体验
Apr 11 Javascript
vue加载完成后的回调函数方法
Sep 07 Javascript
浅谈JavaScript中this的指向问题
Jul 28 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版本的cron定时任务执行器使用实例
2014/08/19 PHP
PHP连接MSSQL2008/2005数据库(SQLSRV)配置实例
2014/10/22 PHP
PHP+MySQL实现无极限分类栏目的方法
2015/12/23 PHP
PHP实现按之字形顺序打印二叉树的方法
2018/01/16 PHP
jquery实现漂浮在网页右侧的qq在线客服插件示例
2013/05/13 Javascript
如何解决Jquery库及其他库之间的$命名冲突
2013/09/15 Javascript
jQuery中的一些小技巧
2017/01/18 Javascript
Nodejs中使用captchapng模块生成图片验证码
2017/05/18 NodeJs
简单实现js鼠标跟随效果
2020/08/02 Javascript
Vue 全局loading组件实例详解
2018/05/29 Javascript
解决ng-repeat产生的ng-model中取不到值的问题
2018/10/02 Javascript
微信小程序组件传值图示过程详解
2019/07/31 Javascript
vue 对axios get pust put delete封装的实例代码
2020/01/05 Javascript
OpenLayers3实现鼠标移动显示坐标
2020/09/25 Javascript
Vue与React的区别和优势对比
2020/12/18 Vue.js
javascript实现点击产生随机图形
2021/01/25 Javascript
Python 提取dict转换为xml/json/table并输出的实现代码
2016/08/28 Python
对pandas中to_dict的用法详解
2018/06/05 Python
python获取Pandas列名的几种方法
2019/08/07 Python
Python hmac模块使用实例解析
2019/12/24 Python
PyQt5+python3+pycharm开发环境配置教程
2020/03/24 Python
python中rc1什么意思
2020/06/19 Python
Pandas替换及部分替换(replace)实现流程详解
2020/10/12 Python
python修改微信和支付宝步数的示例代码
2020/10/12 Python
Python调用飞书发送消息的示例
2020/11/10 Python
解决python3中os.popen()出错的问题
2020/11/19 Python
N:Philanthropy官网:美国洛杉矶基础款服装
2020/06/09 全球购物
外科实习自我鉴定
2013/10/06 职场文书
普通大学毕业生自荐信
2013/11/04 职场文书
建筑结构施工专业推荐信
2014/02/21 职场文书
民主生活会对照检查材料范文
2014/10/01 职场文书
2014年青年教师工作总结
2014/12/17 职场文书
费城故事观后感
2015/06/10 职场文书
美甲店的创业计划书模板
2019/08/23 职场文书
教你怎么用PyCharm为同一服务器配置多个python解释器
2021/05/31 Python
详解Redis基本命令与使用场景
2021/06/01 Redis