微信小程序实现的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 相关文章推荐
jQuery Ajax方法调用 Asp.Net WebService 的详细实例代码
Apr 27 Javascript
JS对象转换为Jquery对象实现代码
Dec 29 Javascript
js简单实现竖向tab选项卡的方法
May 04 Javascript
AngularJs expression详解及简单示例
Sep 01 Javascript
Bootstrap基本插件学习笔记之Alert警告框(20)
Dec 08 Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
Feb 15 Javascript
Vue2.0基于vue-cli+webpack Vuex的用法(实例讲解)
Sep 15 Javascript
CheckBox多选取值及判断CheckBox选中是否为空的实例
Oct 31 Javascript
浅析前端路由简介以及vue-router实现原理
Jun 01 Javascript
jQuery实现全选、反选和不选功能的方法详解
Dec 04 jQuery
js将URL网址转为16进制加密与解密函数
Mar 04 Javascript
解决vue的touchStart事件及click事件冲突问题
Jul 21 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中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思
2013/06/28 PHP
php 删除目录下N分钟前创建的所有文件的实现代码
2013/08/10 PHP
Symfony2框架创建项目与模板设置实例详解
2016/03/17 PHP
WordPress中设置Post Type自定义文章类型的实例教程
2016/05/10 PHP
php正确输出json数据的实例讲解
2018/08/21 PHP
yii2 在控制器中验证请求参数的使用方法
2019/06/19 PHP
Extjs学习笔记之一 初识Extjs之MessageBox
2010/01/07 Javascript
js 点击按钮弹出另一页,选择值后,返回到当前页
2010/05/26 Javascript
jQuery Ajax使用 全解析
2010/12/15 Javascript
js控制input框只读实现示例
2014/01/20 Javascript
jQuery实现dialog设置focus焦点的方法
2015/06/10 Javascript
jQuery实现输入框下拉列表树插件特效代码分享
2015/08/27 Javascript
jQuery flip插件实现的翻牌效果示例【附demo源码下载】
2016/09/20 Javascript
Vue中fragment.js使用方法详解
2017/03/09 Javascript
原生js实现trigger方法示例代码
2019/05/22 Javascript
使用element-ui的el-menu导航选中后刷新页面保持当前选中状态
2019/07/19 Javascript
layui实现数据表格点击搜索功能
2020/03/26 Javascript
vue实现将一个数组内的相同数据进行合并
2019/11/07 Javascript
vue+axios全局添加请求头和参数操作
2020/07/24 Javascript
swiper4实现移动端导航栏tab滑动切换
2020/10/16 Javascript
Python 爬虫多线程详解及实例代码
2016/10/08 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
2019/03/11 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
FFT快速傅里叶变换的python实现过程解析
2019/10/21 Python
耐克中国官方商城:Nike中国
2018/10/18 全球购物
英国最大的独立摄影零售商:Park Cameras
2019/11/27 全球购物
澳大利亚手袋、珠宝和在线时尚精品店:The Way
2019/12/21 全球购物
泰国排名第一的家居用品中心:HomePro
2020/11/18 全球购物
超市国庆节促销方案
2014/02/20 职场文书
《木笛》教学反思
2014/03/01 职场文书
优乐美广告词
2014/03/14 职场文书
房产继承公证书
2014/04/09 职场文书
农业项目投资意向书
2015/05/09 职场文书
2016领导干部廉洁从政心得体会
2016/01/19 职场文书
redis 限制内存使用大小的实现
2021/05/08 Redis
MySQL 原理与优化之Update 优化
2022/08/14 MySQL