微信小程序实现的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 相关文章推荐
学习js所必须要知道的一些
Mar 07 Javascript
瀑布流布局并自动加载实现代码
Mar 12 Javascript
jquerydom对象的事件隐藏显示和对象数组示例
Dec 10 Javascript
jquery中ajax函数执行顺序问题之如何设置同步
Feb 28 Javascript
jquery实现弹出层遮罩效果的简单实例
Mar 03 Javascript
JavaScript检查数字是否为整数或浮点数的方法
Jun 09 Javascript
javascript实现信息增删改查的方法
Jul 25 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
Oct 10 Javascript
JS中正则表达式全局匹配模式 /g用法详解
Apr 01 Javascript
20行JS代码实现网页刮刮乐效果
Jun 23 Javascript
使用React代码动态生成栅格布局的方法
May 24 Javascript
原生js实现弹幕效果
Nov 29 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还会继续执行么
2016/05/17 PHP
PHP搭建大文件切割分块上传功能示例
2017/01/04 PHP
yii gridview实现时间段筛选功能
2017/08/15 PHP
PHP chr()函数讲解
2019/02/11 PHP
laravel开发环境homestead搭建过程详解
2020/07/03 PHP
通过隐藏option实现select的联动效果
2009/11/10 Javascript
jquery实现手风琴效果实例代码
2013/11/15 Javascript
js螺旋动画效果的具体实例
2013/11/15 Javascript
jQuery团购倒计时特效实现方法
2015/05/07 Javascript
简介JavaScript中toTimeString()方法的使用
2015/06/12 Javascript
实例讲解jQuery EasyUI tree中state属性慎用
2016/04/01 Javascript
vue2 router 动态传参,多个参数的实例
2017/11/10 Javascript
vue登录路由验证的实现
2017/12/13 Javascript
Vue.set()实现数据动态响应的方法
2018/02/07 Javascript
vue2.0+ 从插件开发到npm发布的示例代码
2018/04/28 Javascript
Python编程之基于概率论的分类方法:朴素贝叶斯
2017/11/11 Python
python可视化爬虫界面之天气查询
2019/07/03 Python
利用python Selenium实现自动登陆京东签到领金币功能
2019/10/31 Python
python框架flask表单实现详解
2019/11/04 Python
python实现logistic分类算法代码
2020/02/28 Python
Pycharm plot独立窗口显示的操作
2020/12/11 Python
英国在线药房和在线医生:LloydsPharmacy
2019/10/21 全球购物
建筑装饰学院室内设计专业个人自我评价
2013/12/07 职场文书
军校本科大学生自我评价
2014/01/14 职场文书
开朗女孩的自我评价
2014/02/10 职场文书
电气自动化求职信
2014/06/24 职场文书
本科毕业生应聘自荐信范文
2014/06/26 职场文书
心理咨询专业自荐信
2014/07/07 职场文书
医院病假条怎么写
2015/08/17 职场文书
村官2015年度工作总结
2015/10/14 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书
Redis集群的关闭与重启操作
2021/07/07 Redis
java设计模式--七大原则详解
2021/07/21 Java/Android
MySQL千万级数据表的优化实战记录
2021/08/04 MySQL
在CSS中使用when/else的方法
2022/01/18 HTML / CSS
阿里面试Nacos配置中心交互模型是push还是pull原理解析
2022/07/23 Java/Android