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


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 相关文章推荐
关于document.cookie的使用javascript
Apr 11 Javascript
用JavaScrpt实现文件夹简单轻松加密的实现方法图文
Sep 08 Javascript
页面版文本框智能提示JS代码
Nov 20 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
Jan 07 Javascript
JavaScript闭包详解
Feb 02 Javascript
JavaScript实现数字数组按照倒序排列的方法
Apr 06 Javascript
jqTransform美化表单
Oct 10 Javascript
详解Vue2.0 事件派发与接收
Sep 05 Javascript
JavaScript树的深度优先遍历和广度优先遍历算法示例
Jul 30 Javascript
vue-i18n结合Element-ui的配置方法
May 20 Javascript
VUE写一个简单的表格实例
Aug 06 Javascript
处理JavaScript值为undefined的7个小技巧
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 cout&amp;lt;&amp;lt;的一点看法
2010/01/24 PHP
php中3种方法统计字符串中每种字符的个数并排序
2012/08/27 PHP
PHP 获取文件权限函数介绍
2013/07/11 PHP
php简单实现文件或图片强制下载的方法
2016/12/06 PHP
php实现数字补零的方法总结
2018/09/12 PHP
php防止表单重复提交实例讲解
2019/02/11 PHP
PHP+redis实现微博的推模型案例分析
2019/07/10 PHP
javascript 窗口加载蒙板 内嵌网页内容
2010/11/19 Javascript
js调用后台servlet方法实例
2013/06/09 Javascript
instanceof和typeof运算符的区别详解
2014/01/06 Javascript
jquery退出each循环的写法
2014/02/26 Javascript
jQuery插件boxScroll实现图片轮播特效
2015/07/14 Javascript
JS实现三级折叠菜单特效,其它级可自动收缩
2015/08/06 Javascript
input 禁止输入特殊字符的四种实现方式
2016/08/24 Javascript
最全面的JS倒计时代码
2016/09/17 Javascript
在html中引入外部js文件,并调用带参函数的方法
2016/10/31 Javascript
使用Vue.js创建一个时间跟踪的单页应用
2016/11/28 Javascript
关于vue.js组件数据流的问题
2017/07/26 Javascript
bootstrap响应式工具使用详解
2017/11/29 Javascript
JavaScript多线程运行库Nexus.js详解
2017/12/22 Javascript
webpack本地开发环境无法用IP访问的解决方法
2018/03/20 Javascript
基于Vue+element-ui 的Table二次封装的实现
2018/07/20 Javascript
微信小程序实现点击空白隐藏的方法示例
2019/08/13 Javascript
基于react项目打包css引用路径错误解决方案
2020/10/28 Javascript
[01:10:49]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
python3中zip()函数使用详解
2018/06/29 Python
pymongo中聚合查询的使用方法
2019/03/22 Python
Python函数的参数常见分类与用法实例详解
2019/03/30 Python
python3模拟实现xshell远程执行liunx命令的方法
2019/07/12 Python
利用python批量爬取百度任意类别的图片的实现方法
2020/10/07 Python
如何用Python提取10000份log中的产品信息
2021/01/14 Python
环法自行车赛官方商店:Le Tour de France
2017/08/27 全球购物
学生安全承诺书
2014/05/22 职场文书
诚信贷款承诺书
2014/05/30 职场文书
管理失职检讨书
2015/05/05 职场文书
2016年村干部公开承诺书(公开承诺事项)
2016/03/25 职场文书