微信小程序实现的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 相关文章推荐
如何做到打开一个页面,过几分钟自动转到另一页面
Apr 20 Javascript
自己动手制作jquery插件之自动添加删除行功能介绍
Oct 14 Javascript
jquery中邮箱地址 URL网站地址正则验证实例代码
Sep 15 Javascript
javascript打印html内容功能的方法示例
Nov 28 Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
Jan 29 Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
Feb 13 Javascript
js中Number数字数值运算后值不对的解决方法
Feb 28 Javascript
JS对象的深度克隆方法示例
Mar 16 Javascript
vue 项目常用加载器及配置详解
Jan 22 Javascript
微信小程序利用swiper+css实现购物车商品删除功能
Mar 06 Javascript
Vue的属性、方法、生命周期实例代码详解
Sep 17 Javascript
Vue 实现输入框新增搜索历史记录功能
Oct 15 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
PHP5权威编程阅读学习笔记 附电子书下载
2012/07/05 PHP
php取得字符串首字母的方法
2015/03/25 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
2017/05/20 PHP
Save a File Using a File Save Dialog Box
2007/06/18 Javascript
js操作时间(年-月-日 时-分-秒 星期几)
2010/06/20 Javascript
stream.js 一个很小、完全独立的Javascript类库
2011/10/28 Javascript
jQuery.each()用法分享
2012/07/31 Javascript
如何获取JQUERY AJAX返回的JSON结果集实现代码
2012/12/10 Javascript
JavaScript中使用typeof运算符需要注意的几个坑
2014/11/08 Javascript
JavaScript中的Web worker多线程API研究
2014/12/06 Javascript
JavaScript函数节流概念与用法实例详解
2016/06/20 Javascript
jQuery弹出窗口打开链接的实现代码
2016/12/24 Javascript
从零学习node.js之搭建http服务器(二)
2017/02/21 Javascript
AngularJS实现的select二级联动下拉菜单功能示例
2017/10/25 Javascript
Vue单页面应用保证F5强刷不清空数据的解决方案
2018/01/31 Javascript
JS实现的图片选择顺序切换和循环切换功能示例【测试可用】
2018/12/28 Javascript
Vue 实现输入框新增搜索历史记录功能
2019/10/15 Javascript
Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
2019/11/04 Javascript
Antd下拉选择,自动匹配功能的实现
2020/10/24 Javascript
用python + openpyxl处理excel2007文档思路以及心得
2014/07/14 Python
python基础教程之五种数据类型详解
2017/01/12 Python
简单谈谈Python中的json与pickle
2017/07/19 Python
详解Python使用tensorflow入门指南
2018/02/09 Python
Django和Flask框架优缺点对比
2019/10/24 Python
python matplotlib实现将图例放在图外
2020/04/17 Python
利用CSS3实现单选框动画特效示例代码
2016/09/26 HTML / CSS
html+css实现自定义图片上传按钮功能
2019/09/04 HTML / CSS
Sandro Paris美国官网:典雅别致的法国时尚服饰品牌
2017/12/26 全球购物
给定一个时间点,希望得到其他时间点
2013/11/07 面试题
计算机专业毕业生自荐信范文
2014/03/06 职场文书
2014年工程部工作总结
2014/11/25 职场文书
2014收银员工作总结范文
2014/12/16 职场文书
先进党支部申报材料
2014/12/24 职场文书
2015年清明节演讲稿范文
2015/03/17 职场文书
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
2021/06/26 MySQL
OpenFeign实现远程调用
2022/08/14 Java/Android