微信小程序实现的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 相关文章推荐
图片按比例缩放函数
Jun 26 Javascript
js模仿windows桌面图标排列算法具体实现(附图)
Jun 16 Javascript
Jquery实现自定义弹窗示例
Mar 12 Javascript
单元选择合并变色示例代码
May 26 Javascript
js实现双击图片放大单击缩小的方法
Feb 17 Javascript
tuzhu_req.js 实现仿百度图片首页效果
Aug 11 Javascript
微信小程序商城项目之购物数量加减(3)
Apr 17 Javascript
Vue.js实现一个todo-list的上移下移删除功能
Jun 26 Javascript
springmvc接收jquery提交的数组数据代码分享
Oct 28 jQuery
javascript闭包的使用之按钮切换功能
Aug 30 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧不动,右侧滑动)
Jan 23 Javascript
原生js实现无缝轮播图
Jan 11 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中flush()、ob_flush()、ob_end_flush()的区别介绍
2013/02/17 PHP
php处理json格式数据经典案例总结
2016/05/19 PHP
PHP文件操作详解
2016/12/30 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
2018/09/07 PHP
JQuery写动态树示例代码
2013/07/31 Javascript
jquery图片放大功能简单实现
2013/08/01 Javascript
javascript中字符串的定义示例代码
2013/12/19 Javascript
jQuery对val和atrr(&quot;value&quot;)赋值的区别介绍
2014/09/26 Javascript
解决ueditor jquery javascript 取值问题
2014/12/30 Javascript
jQuery $.each遍历对象、数组用法实例
2015/04/16 Javascript
javascript检查浏览器是否已经启用XX功能
2015/07/10 Javascript
jQuery实现可展开合拢的手风琴面板菜单
2015/09/15 Javascript
JavaScript计划任务后台运行的方法
2015/12/18 Javascript
微信小程序新增的拖动组件movable-view使用教程
2017/05/20 Javascript
Vue+Mock.js模拟登录和表格的增删改查功能
2018/07/26 Javascript
vue中使用axios post上传头像/图片并实时显示到页面的方法
2018/09/27 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
2020/08/04 Javascript
Python和php通信乱码问题解决方法
2014/04/15 Python
python解决方案:WindowsError: [Error 2]
2016/08/28 Python
Python3 加密(hashlib和hmac)模块的实现
2017/11/23 Python
Django项目中model的数据处理以及页面交互方法
2018/05/30 Python
python命令 -u参数用法解析
2019/10/24 Python
利用python实现冒泡排序算法实例代码
2019/12/01 Python
pandas中的ExcelWriter和ExcelFile的实现方法
2020/04/24 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
2020/06/02 Python
Python延迟绑定问题原理及解决方案
2020/08/04 Python
利用python绘制中国地图(含省界、河流等)
2020/09/21 Python
Python中的面向接口编程示例详解
2021/01/17 Python
英国户外装备商店:Ultimate Outdoors
2019/05/07 全球购物
竞聘演讲稿怎么写
2014/08/28 职场文书
导游词开场白
2015/01/31 职场文书
企业战略合作意向书
2015/05/08 职场文书
运动会致辞稿
2015/07/29 职场文书
2019各种保证书范文
2019/06/24 职场文书
如何在Mac上通过docker配置PHP开发环境
2021/05/29 PHP
讲解MySQL增删改操作
2022/05/06 MySQL