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


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 相关文章推荐
JS控制表格隔行变色
Jun 26 Javascript
JavaScript 学习笔记(十四) 正则表达式
Jan 22 Javascript
JS获取页面窗口大小的代码解读
Dec 01 Javascript
jquery乱码与contentType属性设置问题解决方案
Jan 07 Javascript
js简单实现竖向tab选项卡的方法
May 04 Javascript
JavaScript算法教程之sku(库存量单位)详解
Jun 29 Javascript
JavaScript严格模式下关于this的几种指向详解
Jul 12 Javascript
vue父组件向子组件(props)传递数据的方法
Jan 02 Javascript
javascript中call,apply,callee,caller用法实例分析
Jul 24 Javascript
Layui带搜索的下拉框的使用以及动态数据绑定方法
Sep 28 Javascript
jQuery实现飞机大战小游戏
Jul 05 jQuery
基于Vue3.0开发轻量级手机端弹框组件V3Popup的场景分析
Dec 30 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
IIS+PHP+MySQL+Zend配置 (视频教程)
2006/12/13 PHP
php统计文章排行示例
2014/03/04 PHP
PHP中4个加速、缓存扩展的区别和选用建议
2014/03/12 PHP
WordPress中调试缩略图的相关PHP函数使用解析
2016/01/07 PHP
Smarty3配置及入门语法
2017/02/22 PHP
jQuery EasyUI API 中文文档 - Parser 解析器
2011/09/29 Javascript
js实现简单的购物车有图有代码
2014/05/26 Javascript
javascript动态修改Li节点值的方法
2015/01/20 Javascript
JQuery中DOM事件绑定用法详解
2015/06/13 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
Bootstrap~多级导航(级联导航)的实现效果【附代码】
2016/03/08 Javascript
java中String类型变量的赋值问题介绍
2016/03/23 Javascript
JS中多步骤多分步的StepJump组件实例详解
2016/04/01 Javascript
chrome浏览器如何断点调试异步加载的JS
2016/09/05 Javascript
轻松学习Javascript闭包
2017/03/01 Javascript
vue监听scroll的坑的解决方法
2017/09/07 Javascript
vue的一个分页组件的示例代码
2017/12/25 Javascript
layer 关闭指定弹出层的例子
2019/09/25 Javascript
构建大型 Vue.js 项目的10条建议(小结)
2019/11/14 Javascript
js模拟实现烟花特效
2020/03/10 Javascript
vue绑定数字类型 value为数字的实例
2020/08/31 Javascript
python简单获取数组元素个数的方法
2015/07/13 Python
python 获取当天每个准点时间戳的实例
2018/05/22 Python
Python标准库shutil用法实例详解
2018/08/13 Python
python使用knn实现特征向量分类
2018/12/26 Python
Python使用pydub库对mp3与wav格式进行互转的方法
2019/01/10 Python
Python 脚本的三种执行方式小结
2019/12/21 Python
波兰品牌内衣及泳装网上商店:Astratex.pl
2017/02/03 全球购物
蛋白质世界:Protein World
2017/11/23 全球购物
工作表扬信的范文
2014/01/10 职场文书
管理信息系学生的自我评价
2014/01/11 职场文书
40岁生日感言
2014/02/15 职场文书
中职三好学生事迹材料
2014/08/24 职场文书
公务员个人年终总结
2015/02/12 职场文书
2015年教研员工作总结
2015/05/26 职场文书
党性修养心得体会2016
2016/01/21 职场文书