微信小程序实现的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 相关文章推荐
Three.js源码阅读笔记(Object3D类)
Dec 27 Javascript
动态的创建一个元素createElement及删除一个元素
Jan 24 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
Feb 20 Javascript
jquery实现的伪分页效果代码
Oct 29 Javascript
JavaScript计划任务后台运行的方法
Dec 18 Javascript
js与jquery正则验证电子邮箱、手机号、邮政编码的方法
Jul 04 Javascript
深究AngularJS中ng-drag、ng-drop的用法
Jun 12 Javascript
JS中mouseup事件丢失的原因与解决办法
Jun 14 Javascript
浅谈VUE防抖与节流的最佳解决方案(函数式组件)
May 22 Javascript
node 版本切换的实现
Feb 02 Javascript
js+canvas实现画板功能
Sep 13 Javascript
在vue中使用Echarts画曲线图的示例
Oct 03 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
全国FM电台频率大全 - 9 上海市
2020/03/11 无线电
如何跨站抓取别的站点的页面的补充
2006/10/09 PHP
PHP框架Swoole定时器Timer特性分析
2014/08/19 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
2019/10/22 PHP
JQuery index()方法使用代码
2010/06/02 Javascript
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)
2010/11/05 Javascript
Javascript倒计时页面跳转实例小结
2013/09/11 Javascript
nodejs中使用monk访问mongodb
2014/07/06 NodeJs
基于jQuery实现表单提交验证
2014/11/24 Javascript
基于Jquery插件Uploadify实现实时显示进度条上传图片
2020/03/26 Javascript
BootStrap 超链接变按钮的实现方法
2016/09/25 Javascript
PHP抓取HTTPS内容和错误处理的方法
2016/09/30 Javascript
js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
2016/12/12 Javascript
jquery实现图片放大点击切换
2017/06/06 jQuery
Angular 2 ngForm中的ngModel、[ngModel]和[(ngModel)]的写法
2017/06/29 Javascript
vue通过路由实现页面刷新的方法
2018/01/25 Javascript
webpack里使用jquery.mCustomScrollbar插件的方法
2018/05/30 jQuery
Vue利用History记录上一页面的数据方法实例
2018/11/02 Javascript
利用JS如何获取form表单数据
2019/12/19 Javascript
Openlayers+EasyUI Tree动态实现图层控制
2020/09/28 Javascript
[01:07]DOTA2次级职业联赛 - Fpb战队宣传片
2014/12/01 DOTA
Python里隐藏的“禅”
2014/06/16 Python
python常规方法实现数组的全排列
2015/03/17 Python
整理Python中的赋值运算符
2015/05/13 Python
Python实现读取txt文件并画三维图简单代码示例
2017/12/09 Python
初学者学习Python好还是Java好
2020/05/26 Python
幼儿园大班新学期寄语
2014/01/18 职场文书
公司自我介绍演讲稿
2014/08/21 职场文书
民族学专业大学生职业规划范文:清晰未来的构想
2014/09/20 职场文书
2015年社区统计工作总结
2015/04/21 职场文书
2016消防宣传标语口号
2015/12/26 职场文书
升职自荐书
2019/05/09 职场文书
mysql脏页是什么
2021/07/26 MySQL
Anaconda配置各版本Pytorch的实现
2021/08/07 Python
React四级菜单的实现
2022/04/08 Javascript
Python序列化模块JSON与Pickle
2022/06/05 Python