微信小程序实现的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代码
Aug 13 Javascript
细品javascript 寻址,闭包,对象模型和相关问题
Apr 27 Javascript
Javascript 面向对象 对象(Object)
May 13 Javascript
前后台交互过程中json格式如何解析以及如何生成
Dec 26 Javascript
自定义刻度jQuery进度条及插件
Sep 02 Javascript
无阻塞加载js,防止因js加载不了影响页面显示的问题
Dec 18 Javascript
js实现九宫格拼图小游戏
Feb 13 Javascript
js实现3d悬浮效果
Feb 16 Javascript
JavaScript实现向select下拉框中添加和删除元素的方法
Mar 07 Javascript
利用C/C++编写node.js原生模块的方法教程
Jul 07 Javascript
webuploader分片上传的实现代码(前后端分离)
Sep 10 Javascript
解决vue项目nginx部署到非根目录下刷新空白的问题
Sep 27 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
一台收音机,让一家人都笑逐颜开!
2020/08/21 无线电
兼容PHP和Java的des加密解密代码分享
2014/06/26 PHP
数组任意位置插入元素,删除特定元素的实例
2017/03/02 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
2019/06/22 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
Prototype 学习 Prototype对象
2009/07/12 Javascript
JavaScript中“过于”犀利地for/in循环使用示例
2013/10/22 Javascript
jquery.idTabs 选项卡使用示例代码
2014/09/03 Javascript
JavaScript File分段上传
2016/03/10 Javascript
Vue.JS入门教程之事件监听
2016/12/01 Javascript
jQuery EasyUI 为Combo,Combobox添加清除值功能的实例
2017/04/13 jQuery
如何理解Vue的作用域插槽的实现原理
2017/08/19 Javascript
promise和co搭配生成器函数方式解决js代码异步流程的比较
2018/05/25 Javascript
关于自定义Egg.js的请求级别日志详解
2018/12/12 Javascript
[01:31:22]Ti4 循环赛第四日附加赛LGD vs Mouz
2014/07/13 DOTA
[01:14]DOTA2亚洲邀请赛小组赛赛前花絮
2017/03/27 DOTA
在Python中用get()方法获取字典键值的教程
2015/05/21 Python
Python实现的插入排序算法原理与用法实例分析
2017/11/22 Python
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
2018/04/17 Python
Python实现在某个数组中查找一个值的算法示例
2018/06/27 Python
Python多线程编程之多线程加锁操作示例
2018/09/06 Python
Django自定义模板过滤器和标签的实现方法
2019/08/21 Python
使用TensorFlow对图像进行随机旋转的实现示例
2020/01/20 Python
迪梵英国官方网站:Darphin英国
2017/12/06 全球购物
Alexandre Birman美国官网:亚历山大·伯曼
2019/10/30 全球购物
美国知名的隐形眼镜电商:Contacts America
2019/11/19 全球购物
物流专业大学生职业生涯规划书范文
2014/01/15 职场文书
优秀技术工人先进材料
2014/02/17 职场文书
高中军训感想800字
2014/02/23 职场文书
推荐信怎么写
2014/05/09 职场文书
搞笑车尾标语
2014/06/23 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
工作迟到检讨书范文
2015/05/06 职场文书
教师节表彰会主持词
2015/07/06 职场文书
小学教师师德培训心得体会
2016/01/09 职场文书
Ajax异步刷新功能及简单案例
2021/11/20 Javascript