微信小程序实现的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 12 Javascript
基于jquery的分页控件(C#)
Jan 06 Javascript
Extjs显示从数据库取出时间转换JSON后的出现问题
Nov 20 Javascript
jQuery extend 的简单实例
Sep 18 Javascript
用jquery写的菜单从左往右滑动出现
Apr 11 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
Apr 26 Javascript
轻松掌握JavaScript策略模式
Aug 25 Javascript
yii form 表单提交之前JS在提交按钮的验证方法
Mar 15 Javascript
jQuery滚动插件scrollable.js用法分析
May 25 jQuery
Vue上传组件vue Simple Uploader的用法示例
Aug 25 Javascript
jQuery实现的上传图片本地预览效果简单示例
Mar 29 jQuery
vue样式穿透 ::v-deep的具体使用
Jun 04 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获取某个月最大天数(最后一天)的方法
2015/07/29 PHP
Codeigniter控制器controller继承问题实例分析
2016/01/19 PHP
CodeIgniter辅助之第三方类库third_party用法分析
2016/01/20 PHP
PHP用正则匹配form表单中所有元素的类型和属性值实例代码
2017/02/28 PHP
php数据结构之顺序链表与链式线性表示例
2018/01/22 PHP
PHP Include文件实例讲解
2019/02/15 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
2020/04/06 PHP
jQuery 学习 几种常用方法
2009/06/11 Javascript
使用jquery修改表单的提交地址基本思路
2014/06/04 Javascript
javascript框架设计之种子模块
2015/06/23 Javascript
jquery获取url参数及url加参数的方法
2015/10/26 Javascript
Vuejs第七篇之Vuejs过渡动画案例全面解析
2016/09/05 Javascript
bootstrap下拉列表与输入框组结合的样式调整
2016/10/08 Javascript
mac上node.js环境的安装测试
2017/07/03 Javascript
vue中实现先请求数据再渲染dom分享
2018/03/17 Javascript
React props和state属性的具体使用方法
2018/04/12 Javascript
vue.js添加一些触摸事件以及安装fastclick的实例
2018/08/28 Javascript
css配合JavaScript实现tab标签切换效果
2018/10/11 Javascript
js html实现计算器功能
2018/11/13 Javascript
解决vue.js提交数组时出现数组下标的问题
2019/11/05 Javascript
JavaScript实现栈结构Stack过程详解
2020/03/07 Javascript
Python 爬虫模拟登陆知乎
2016/09/23 Python
python清除字符串中间空格的实例讲解
2018/05/11 Python
python实现拼图小游戏
2020/02/22 Python
使用Python发现隐藏的wifi
2020/03/04 Python
windows下Pycharm安装opencv的多种方法
2020/03/05 Python
Answear匈牙利:来自全球200多个知名时尚品牌
2017/04/21 全球购物
西班牙英格列斯百货法国官网:El Corte Inglés法国
2017/07/09 全球购物
泰国在线书店:SE-ED
2020/06/21 全球购物
Java方面的关于数组和继承的笔面试题
2015/09/18 面试题
《那片绿绿的爬山虎》教学反思
2014/02/27 职场文书
党校学习心得体会范文
2014/09/09 职场文书
政风行风评议整改方案
2014/09/15 职场文书
教师求职自荐信范文
2015/03/04 职场文书
2015年留守儿童工作总结
2015/05/22 职场文书
中秋节英文祝福语句(14句)
2019/09/11 职场文书