微信小程序实现的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 相关文章推荐
Extjs学习笔记之一 初识Extjs之MessageBox
Jan 07 Javascript
Jquery Ajax解析XML数据(同步及异步调用)简单实例
Feb 12 Javascript
javascript轻量级模板引擎juicer使用指南
Jun 22 Javascript
js数组去重的方法汇总
Jul 29 Javascript
JavaScript中关联原型链属性特性
Feb 13 Javascript
JS与HTML结合使用marquee标签实现无缝滚动效果代码
Jul 05 Javascript
domReady的实现案例
Nov 23 Javascript
vue监听scroll的坑的解决方法
Sep 07 Javascript
JavaScript伪数组用法实例分析
Dec 22 Javascript
详解基于Node.js的HTTP/2 Server实践
May 31 Javascript
layer弹出层 iframe层去掉滚动条的实例代码
Aug 17 Javascript
vue2 设置router-view默认路径的实例
Sep 20 Javascript
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中文件上传的安全问题
2006/10/09 PHP
洪恩在线成语词典小偷程序php版
2012/04/20 PHP
3个PHP多维数组转为一维数组的方法实例
2014/03/13 PHP
php抓取网站图片并保存的实现方法
2015/10/29 PHP
php生成与读取excel文件
2016/10/14 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
PHP函数积累总结
2019/03/19 PHP
禁止js文件缓存的代码
2010/04/09 Javascript
一个JQuery操作Table的代码分享
2012/03/30 Javascript
javascript实现存储hmtl字符串示例
2014/04/25 Javascript
JavaScript打印网页指定区域的例子
2014/05/03 Javascript
JS实现点击按钮自动增加一个单元格的方法
2015/03/09 Javascript
JavaScript数组去重的五种方法
2015/11/05 Javascript
Jquery实现$.fn.extend和$.extend函数
2016/04/14 Javascript
一个仿微博登陆邮箱提示框js开发案例
2016/07/28 Javascript
javascript实现瀑布流动态加载图片原理
2016/08/12 Javascript
js实现鼠标跟随运动效果
2020/08/02 Javascript
vuex操作state对象的实例代码
2018/04/25 Javascript
vue 项目地址去掉 #的方法
2018/10/20 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
2019/11/23 Javascript
VSCode搭建React Native环境
2020/05/07 Javascript
[41:13]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第一场 11.20
2020/11/20 DOTA
python re模块findall()函数实例解析
2018/01/19 Python
python复制列表时[:]和[::]之间有什么区别
2018/10/16 Python
python实现静态服务器
2019/09/05 Python
Pytorch DataLoader 变长数据处理方式
2020/01/08 Python
tensorflow模型保存、加载之变量重命名实例
2020/01/21 Python
二年级小学生评语
2014/04/21 职场文书
专家推荐信模板
2014/05/09 职场文书
教师个人教学总结
2015/02/11 职场文书
工程移交协议书
2016/03/24 职场文书
2019年妇科护士的自我鉴定(3篇)
2019/09/26 职场文书
python全面解析接口返回数据
2022/02/12 Python
解决 redis 无法远程连接
2022/05/15 Redis
Redis keys命令的具体使用
2022/06/05 Redis
GoFrame gredis缓存DoVar Conn连接对象 自动序列化GoFrame gredisDo/DoVar方法Conn连接对象自动序列化/反序列化总结
2022/06/14 Golang