美文网首页让前端飞
微信小程序下拉框组件使用方法

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

作者: a333661d6d6e | 来源:发表于2019-01-17 21:56 被阅读7次

    这篇文章主要为大家详细介绍了微信小程序下拉框组件的使用方法,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。

    适用场景

    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>
    

    三、性别选择

    注意,不填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里设置相关初始变量!

     var app = getApp();
     
     data: {
     
      region:['湖南','长沙','岳麓'],
      date:'2010-10-10',
      gender:['男','女'],
      index:0
     },
     //欢迎加入前端全栈开发交流圈一起吹水聊天学习交流:619586920
     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();
     }
     //欢迎加入前端全栈开发交流圈一起吹水聊天学习交流:619586920
     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;
     }
     //欢迎加入前端全栈开发交流圈一起吹水聊天学习交流:619586920
     /*
     * 选择图片
     */
     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();
     }
     //欢迎加入前端全栈开发交流圈一起吹水聊天学习交流:619586920
     /*
     * 删除图片
     */
     del(index) {
     
      let self = this;
     
      self.that.data[self.name].splice(index, 1);
     
      self.show();
     }
     
     
    }
    module.exports = picUploader;
    

    结语

    感谢您的观看,如有不足之处,欢迎批评指正。

    获取资料

    本次给大家推荐一个免费的学习群,里面概括移动应用网站开发,css,html,webpack,vue node angular以及面试资源等。
    对web开发技术感兴趣的同学,欢迎加入Q群:619586920,不管你是小白还是大牛我都欢迎,还有大牛整理的一套高效率学习路线和教程与您免费分享,同时每天更新视频资料。
    最后,祝大家早日学有所成,拿到满意offer,快速升职加薪,走上人生巅峰。

    相关文章

      网友评论

        本文标题:微信小程序下拉框组件使用方法

        本文链接:https://www.haomeiwen.com/subject/uvgwrqtx.html