微信小程序实现的picker多级联动功能示例


Posted in Javascript onMay 23, 2019

本文实例讲述了微信小程序实现的picker多级联动功能。分享给大家供大家参考,具体如下:

wxml部分:

<picker
 mode="multiSelector"
 bindchange="bindjobcatchange"
 bindcolumnchange="bingjobcatcolumnchange"
 value="{{multiIndex}}"
 range="{{job_cat_list}}"
  range-key="{{'cat_name'}}"
>
 <view class="picker">
  {{fenlei_title}}
 </view>
</picker>

js部分:

Page({
 data: {
  server_url: app.globalData.URL,
  fenlei_title:'分类',
  job_cat_list:[],
  multiIndex: [0,0,0],
  filter:{
   keywords:'',
   job_cat_id:''
  }
 },
 onLoad: function () {
  this.jobcat();
 },
 jobcat: function() {
  var that = this;
  wx.request({
   url: app.globalData.URL + "/xxx/eeee",
   data: {
    x: '',
    y: ''
   },
   header: {
    'content-type': 'application/json' // 默认值
   },
   success: function (res) {
    var data = res.data.data;
    that.setData({
     job_cat_list: [data, data[0]['children'], data[0]['children'][0]['children']]
    });
   }
  });
 },
 bindjobcatchange: function(e){
  this.setData({multiIndex:e.detail.value})
 },
 bingjobcatcolumnchange: function(e){
  var index = this.data.multiIndex;
  const data = {
   job_cat_list: this.data.job_cat_list,
   multiIndex: this.data.multiIndex
  }
  this.data.multiIndex[e.detail.column] = e.detail.value;
  if (e.detail.column==0){
    data.job_cat_list[1] = this.data.job_cat_list[0][index[0]]['children'];
    data.job_cat_list[2] = data.job_cat_list[1][index[1]]['children'];
  }else if(e.detail.column===1){
    data.job_cat_list[2] = data.job_cat_list[1][index[1]]['children'];
    this.data.filter.job_cat_id = data.job_cat_list[2][index[2]]['cat_name'];
  }else if(e.detail.column===2){
   this.data.filter.job_cat_id=data.job_cat_list[2][e.detail.value]['cat_name'];
  }
  this.setData(data)
 }
})

php后台部分:

public function jobcate(){
    $zp_job_catModel = new ZpJobCat();
    $job_cat = $zp_job_catModel->getcateAll();
    $i=0;
    $return_data = [];
    foreach ($job_cat as $key=>$val){
      $return_data[$i] = $val;
      $return_data[$i]['children'] = [];
      if (!empty($val['children'])){
        $c=0;
        foreach ($val['children'] as $k=>$v){
          $return_data[$i]['children'][$c] = $v;
          if (!empty($v['children'])){
            $return_data[$i]['children'][$c]['children'] = [];
            $m=0;
            foreach ($v['children'] as $val2){
              $return_data[$i]['children'][$c]['children'][$m] = $val2;
              $m++;
            }
          }
          $c++;
        }
      }
      $i++;
    }
    $this->_success($return_data);
}

另外,本站在线工具小程序上的天气查询、车牌号归属地查询以及阴历阳历转换等工具就采用了联动查询功能,感兴趣的朋友可以扫描如下小程序码查看:

微信小程序实现的picker多级联动功能示例

希望本文所述对大家微信小程序开发有所帮助。

Javascript 相关文章推荐
JavaScript 题型问答有答案参考
Feb 17 Javascript
Angular用来控制元素的展示与否的原生指令介绍
Jan 07 Javascript
Js遍历键值对形式对象或Map形式的方法
Aug 08 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
Aug 26 Javascript
js获取指定字符前/后的字符串简单实例
Oct 27 Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
Nov 22 Javascript
vue2.0+koa2+mongodb实现注册登录
Apr 10 Javascript
Vue下滚动到页面底部无限加载数据的示例代码
Apr 22 Javascript
vue引入js数字小键盘的实现代码
May 14 Javascript
关于微信公众号开发无法支付的问题解决
Dec 28 Javascript
echarts实现获取datazoom的起始值(包括x轴和y轴)
Jul 20 Javascript
Vue3如何理解ref toRef和toRefs的区别
Feb 18 Vue.js
js console.log打印对象时属性缺失的解决方法
May 23 #Javascript
Node.js+ELK日志规范的实现
May 23 #Javascript
jquery+php后台实现省市区联动功能示例
May 23 #jQuery
js尾调用优化的实现
May 23 #Javascript
浅谈redux, koa, express 中间件实现对比解析
May 23 #Javascript
Express结合Webpack的全栈自动刷新
May 23 #Javascript
ajax跨域访问遇到的问题及解决方案
May 23 #Javascript
You might like
PHP ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
PHP基于工厂模式实现的计算器实例
2015/07/16 PHP
Zend Framework动作助手FlashMessenger用法详解
2016/03/05 PHP
php获取小程序码的实现代码(B类接口)
2020/06/13 PHP
AJAX使用了UpdatePanel后无法使用alert弹出脚本
2010/04/02 Javascript
jQuery源码解读之addClass()方法分析
2015/02/20 Javascript
JS实现关闭当前页而不弹出提示框的方法
2016/06/22 Javascript
jquery过滤特殊字符',防sql注入的实现方法
2016/08/17 Javascript
js实现文字超出部分用省略号代替实例代码
2016/09/01 Javascript
jquery基本选择器匹配多个元素的实现方法
2016/09/05 Javascript
IE8利用自带的setCapture和releaseCapture解决iframe的拖拽事件方法
2016/10/25 Javascript
JSON与XML的区别对比及案例应用
2016/11/11 Javascript
AngularJS中$apply方法和$watch方法用法总结
2016/12/13 Javascript
jquery版轮播图效果和extend扩展
2017/07/18 jQuery
VueJs组件prop验证简单介绍
2017/09/12 Javascript
three.js中3D视野的缩放实现代码
2017/11/16 Javascript
vue新建项目并配置标准路由过程解析
2019/12/09 Javascript
python处理PHP数组文本文件实例
2014/09/18 Python
Python中使用gzip模块压缩文件的简单教程
2015/04/08 Python
Python线程的两种编程方式
2015/04/14 Python
黑科技 Python脚本帮你找出微信上删除你好友的人
2016/01/07 Python
python创建列表和向列表添加元素的实现方法
2017/12/25 Python
使用selenium模拟登录解决滑块验证问题的实现
2019/05/10 Python
利用python list完成最简单的DB连接池方法
2019/08/09 Python
解决pycharm 安装numpy失败的问题
2019/12/05 Python
Python callable内置函数原理解析
2020/03/05 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
python处理写入数据代码讲解
2020/10/22 Python
python import 上级目录的导入
2020/11/03 Python
Canvas与图片压缩的示例代码
2017/11/28 HTML / CSS
世界上最好的威士忌和烈性酒购买网站:The Whisky Exchange
2016/11/20 全球购物
Silk Therapeutics官网:清洁、抗衰老护肤品
2020/08/12 全球购物
房屋买卖授权委托书
2014/09/27 职场文书
前台接待岗位职责
2015/02/03 职场文书
工作保证书怎么写
2015/02/28 职场文书
2015年第31个教师节致辞
2015/07/31 职场文书